개발자
[JAVA 2일차]메소드,지역변수/현재시각 메소드/자료형,초기화,변수 선언,형변환/import(아직) 본문
메소드
1. instance mathod (인스턴스 메소드)
인스턴스 변수를 이용해서 작업을 하므로 변수의 묶음인 객체를 생성해야 인스턴스 메소드를 호출 할 수 있다.
인스턴스 생성후, "참조 변수.메소드명()" 으로 호출한다.
- 리턴값 없는 메소드 (void)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
void showInfo_1() {
int hopeMoney = 6000; // 지역변수(local variable) hopeMoney 가 지역변수
// 지역변수(local variable)는 {} 내에서만 사용되는 것으로써 {} 을 벗어나는 순간 지역변수를 자동적으로 메모리(RAM)에서 삭제가 되어진다.
//지역변수는 반드시 초기화를 해주어야 한다. 만약에 초기화를 안해주면 오류가 발생한다.
System.out.println("===="+name+"님의 회원정보====\n"
+ " 1. 아이디 : " + id + "\n"
+ " 2. 비밀번호 : " + pwd + "\n"
+ " 3. 성명 : "+ name + "\n"
+ "4. 이메일 : "+ email +"\n"
+ "5. 나이 : "+ age +"세\n"
+ "6. 신장 : "+ height +"cm\n"
+ "7. 등급 : "+ grade +"\n"
+ "8. 희망연봉 :" + hopeMoney + "만원\n");
}
|
cs |
호출 할때는 ==> ma2.showInfo_1(); // "참조 변수.메소드명()"
-리턴값 있는 메소드(String,doble 등)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
String showInfo_2() {
int hopeMoney = 7000;
return " ====" + name + "님의 회원정보 ======\n"
+ "1. 아이디 :"+ id +"\n"
+ "2. 비밀번호 : "+ pwd +"\n"
+ "3. 성명 : "+ name +"\n"
+ "4. 이메일 : "+ email + "\n"
+ "5. 나이 : "+ age +"\n"
+ "6. 신장 : " + height +"\n"
+ "7. 등급 : "+ grade + "\n"
+ "8. 희망연봉 : "+hopeMoney+"만원\n";
}
|
cs |
호출 할때는 ==>
String info = ma2.showInfo_2(); //스트링타입으로 호출시
System.out.println(info);
2. static mathod (스테틱 메소드 = 클래스 메소드)
인스턴스 메소드와 달리 인스턴스 변수가 필요 없으므로 객체를 생성하지 않고도 호출할 수 있다.
객체 생성없이 '클래스명.메소드 명()'으로 호출이 가능하다. 인스턴스 멤버와 관련되지 않은 작업을 한다.
메소드 내에서 인스턴스 변수를 사용할 수 없다.
호출 할때는 ==> MyUtil.currenTime(); // '클래스명.메소드 명()'
MyUtil util = new MyUtil(); 이렇게 객체를 생성해줄 필요가 없다.
- 현재시각을 리턴시켜주는 Static 메소드 생성하기
<리턴값있는 String 타입으로>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package my.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class MyUtil {
public static String currentTime() {
Date now = new Date(); // 현재시각 java.util.Date now (생략한거) 앞에 import 해줬으니 됐다
// 원하는 데이터 포맷 지정 SimpleDateFormat sdfrmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 지정한 포맷으로 변환 String result = sdfrmt.format(now);
return result; // 이메소드하면 위에 2022를 돌려주겠다 String 타입으로 호출
}// end of mathod currenTime--------------------------------------------------------
|
cs |
SimpleDateFormat : 날짜를 원하는 포맷으로 파싱시켜주는 클래스이다. 생성자 () 안에 원하는 패턴을 입력한다.
format : format함수를 이용하여 프린트 하면 원하는 패턴의 날짜형식이 리턴되게 됩니다.(String result 형식 아닌 return sdfrmt.format(now); 이렇게 해도 된다.
==> 호출시 System.out.println(" 종료날짜 및 시각:" + MyUtil.currentTime()); 형식으로 호출
<리턴값 없는 void 타입>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package practice;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class Tesrt2 {
public static void currentTime() {
Date now = new Date();
SimpleDateFormat sdfrmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result = sdfrmt.format(now);
System.out.println(">> 현재시각 : " + result);
}
}
|
cs |
==> 호출시 MyUtil.currentTime(); 형식으로 호출
<String 형식의 문자열을 SimpleDateFormat을 이용하여 원하는 포맷으로 출력하기>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package practice;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test3 {
public static void main(String[] args) {
// 날짜 형식 변환시 parsing 오류를 try catch로 체크
try {
String strDate = "20200806";
SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat newDtFormat = new SimpleDateFormat("yyyy-MM-dd");
// String 타입을 Date 타입으로 변환
Date formatDate = dtFormat.parse(strDate);
// Date타입의 변수를 새롭게 지정한 포맷으로 변환
String strNewDtFormat = newDtFormat.format(formatDate);
System.out.println("포맷 전 : " + formatDate);
System.out.println("포맷 후 : " + strNewDtFormat);
}catch (ParseException e) {
e.printStackTrace();
}
}
}
|
cs |
결과값 => 포맷 전 : Thu Aug 06 00:00:00 GMT+09:00 2020
포맷 후 : 2020-08-06
변수의 종류
1. 인스턴스 변수
: 클래스의 구성요소인 속성값을 저장하는 용도로, 소문자로 작성한다. 인스턴스 변수는 지역변수와는 다르게 생성 후 초기화할 필요없이 자동으로 데이터형의 기본값이 설정된다.
멤버변수 => 메소드 밖에서 선언된 instance 변수와 static 변수를 합친것을 멤버변수라고 부른다.
2. 지역변수(local variable=로컬 변수)
: 한 지역내에서만 사용할 수 있는 변수로, 지역이란 중괄호 { }를 의미한다. 지역변수는 반드시 초기화를 해주어야 한다. 만약에 초기화를 안해주면 오류가 발생한다.
1
2
3
4
|
String showInfo_2() {
int hopeMoney = 7000;
}
|
cs |
지역변수 int hopeMoney 를 7000으로 초기화 해주었다.
자료형의 종류 및 초기화 값
1. 원시형 타입(Primitive Type)
1.1 정수형(byte, short, int, long)
:자바에서 정수형의 기본타입은 int 이다. 그러므로 정수형의 값이 -2,147,483,648 ~ 2,147,483,647 범위를 벗어난 것 이라면 반드시 숫자뒤에 소문자 l 또는 대문자 L 을 붙여야 한다.
타입 | 크기 | 범위 | 초기화 값 |
byte | 1byte == 8bit | -128 ~ 127 | 0 |
short | 2byte == 16bit) | -32,768 ~ 32,767 | 0 |
int | 4byte == 32bit) | 2,147,483,648 ~ 2,147,483,647 | 0 |
long | 8byte == 64bit | -9,223,372,036,854,775,808~ 9,223,372,036,854,775,807 | 0 |
1.2 실수형(float, double)
:자바에서 실수형의 기본타입은 double 이다.
그러므로 실수값을 float 형태로 나타내기 위해서는 실수뒤에 반드시 소문자 f 또는 대문자 F를 붙여야 한다.
타입 | 크기 | 범위 | 초기화 값 |
float | 4byte | 135.3246235 소수점이하 7자리까지 표현됨 |
0.0 |
double | 8byte | 135.3246234502345642 수점이하 15~16자리까지 표현됨 |
0.0 |
char : 자바는 유니코드 체계를 사용한다. 그래서 char 타입에는 문자 1개 또는 숫자(0~65535)도 올 수 있다.
타입 | 크기 | 범위 | 초기화 값 |
char | 2byte | 문자 1개 or 0 ~ 65535 | ' ' (공백) |
표현 안되는 것 : "", ab , 'a ' / 되는 것 : ' ' ==> 두 글자 불가, 한 글자만 가능하다.
UNICODE 표 참조 : http://www.tamasoft.co.jp/en/general-info/unicode.html
Unicode Table
www.tamasoft.co.jp
1.4 논리형(boolean)
boolean : 참(true) 또는 거짓(false) 값
타입 | 크기 | 범위 | 초기화 값 |
boolean | 1byte | true or false | false |
Boolean(Object)의 기본값은 null이고boolean(primitive)의 기본값은 false입니다.
<boolean 참조 블로그>
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Boolean
Boolean - JavaScript | MDN
Boolean 객체는 불리언 값을 감싸고 있는 객체입니다.
developer.mozilla.org
https://docs.microsoft.com/ko-kr/dotnet/api/system.boolean?view=net-6.0
Boolean 구조체 (System)
부울(true 또는 false) 값을 나타냅니다.
docs.microsoft.com
2. 참조형 타입(Reference Type)
: 참조형은 기본형 8종류를 제외한 모든 데이터 유형이고, 클래스 객체(==object ==instance) 타입으로 java.lang.Object를 상속 받는다. 참조 유형의 변수는 데이터를 그대로 저장하지 않고 데이터를 저장하는 메모리의 주소만 저장한다. 즉, 메모리상에 저장되어진 객체의 메모리 주소를 참조하는 것이다. 변수는 데이터를 다른 영역에 저장하고 그 주소만을 이용하는 것이다.
String : 문자열 타입으로 클래스는 참조형에 속하지만 기본적인 사용은 기본형처럼 사용한다. 그리고 불변(immutable) 객 체이다. String 클래스에는 값을 변경해주는 메소드들이 존재하지만, 해당 메소드를 통해 데이터를 변경한다면 새 로운 String 클래스 객체를 만들어내는 것이다.
일반적으로 기본형 비교는 == 연산자를 사용하지만 String 객체간의 비교는 .equals() 메소드를 사용해야 한다.
타입 | 크기 | 범위 | 초기화값 |
String | 4byte | 문자열 | null |
변수선언
<변수의 명명규칙>
1. 변수명의 길이에는 제한이 없다.
2. 대,소문자 구분이 있다.
3. 첫글자가 숫자는 안된다.
4. 특수문자는 '_' 와 '$' 만 사용이 가능하다.
5. 예약어(예 package, import, public, class, String, int, float ....)는 변수명으로 사용불가하다.
6.<권장사항이지 규칙은 아니다> 첫글자는 소문자로 시작하고 단어와 단어가 결합된 경우이라면 두번째 단어는 대문자로 시작하는것이 일반적이다.
단어와 단어가 결합된 경우 => mypoint
myPoint (카멜기법)
my_point (스네이크기법)
형 변환
자바에서 그 데이터 타입이 byte 또는 short 또는 char 인 변수가 사칙연산(_ - * /)을 만나면 자동적으로 그 변수의 데이터 타입은 int로 변하게 되어있다. int(4byte) 아래의 크기인 byte(1byte), short(2byte), char(2byte) 타입이 사칙연산(+ - * /)을 만나면 자동적으로 int 타입으로 자동 형변환이 발생된다.
'A' => 65 'a' => 97 '0' => 48 '9' => 57
'B' => 66 'b' => 98 '1' => 49 ' ' => 32
'C' => 67 'c' => 99 '2' => 50
'대문자' + 32 => 소문자에 해당하는 숫자
'소문자' - 32 => 대문자에 해당하는 숫자
<예시>
Kor+eng+math ==> 자동적으로 int 타입으로 형변환(casting) 된다.
(short)(kor+eng+math) ==> 강제 형변환(casting) 된다. short로 강제형변환.
<기타 개념>
1. 정수/정수는 정수가 나온다.
: 예를 들어 10/4 는 실수인 2.5가 아니라 2.5에서 소수인 0.5를 잘라버린 정수인2가 나온다. 즉, 10/4는 몫인 2가 나온다. 이때 byte, short 안됨 / (사칙연산) 만나면 int로 바뀌었으니까 실수로 바꾸면 int안되거 double 실수타입을 바꿔준다.
'개발자 > JAVA' 카테고리의 다른 글
[JAVA 6일차]wrapper/tpUppercase/chatAt/Math(반올림등)/equals/switch (0) | 2022.08.15 |
---|---|
[java 5일차]파라미터 좀 더 이해해보기 (0) | 2022.08.15 |
[JAVA 4일차]연산자(산술,증감,논리,비교,할당,삼항)/연산메소드/Scanner/try catch(예외)/Integer(변환)/NumberFormatExceptio (0) | 2022.08.15 |
[JAVA 3일차]파라미터,생성자/필드값변경/Casting (0) | 2022.08.15 |
[JAVA 1 일차] JAVA 설치/JRE와JDK(설치 및 환경 변수 설정)/클래스,변수,객체,필드,메소드 (0) | 2022.06.14 |