1. 기본타입
-자바는 정수, 실수, 논리값을 저장할 수 있는 기본타입을 제공, 타입은 총 8가지
-정수타입 : byte, char, short, int, long
-실수타입 : float, double
-논리 타입: boolean
1) 정수타입
-byte(1byte/8bit), char(2byte/16bit), short(2byte/16bit), int(4byte/32bit), long(4byte/32bit)
-기본적으로 컴파일러는 정수리터럴을 int타입으로 간주하는데, int타입의 허용범위을 초과할 경우,
long타입을 컴파일러 에게 알려줘야하는데 방법은 정수 리터럴 뒤에 소문자l이나 대문자 L을 붙여준다
2) char 타입 : 하나의 문자를 작은 따옴표로 감싼 것을 문자리터럴 이라고 한다
-문자리터럴은 유니코드로 변환되어 저장
-유니코드: 세계각국의 문자를 2byte오 표현할 수 있는 숫자
-유니코드는 정수이므로 char도 정수타입에 속한다
3) String타입 :큰따옴표""로 감싼 문자들을 문자열 이라고 부른다
-문자열을 변수에 저장하고 싶다면 String타입을 사용해야 한다
-이스케이프 문자( \ )
\t : 탭만큼 띄움 , \n : 줄바꿈 등..
4) 실수타입
-소수점이 있는 실수리터럴을 저장할 수 있는 타입은 float 와 double이다
-자바는 실수리터럴을 기본적으로 double타입으로 해석하기 때문에 실수리터럴을
float타입변수에 저장하면 에러발생
-실수리터럴을 float타입으로 저장하고 싶으면 리터럴 뒤어 f 또는 F를 붙인다
5) 논리타입
-참과 거짓을 의미하는 논리리터럴로 true와 false를 사용한다
-논리리터럴은 1byte 크기의 boolean타입변수에 저장
핵심포인트
-정수타입 : 정수를 저장할 수 있는 타입으로 byte, char, short, int, long 타입을 말한다
-char 타입 : 작은따옴표로 감싼 하나의 문자리터럴을 저장할 수 있는 타입을 말한다
-String 타입 : 큰따옴표로 감싼 문자열을 저장할 수 있는 타입을 말한다
-실수타입 : 실수를 저장할 수 있는 타입으로 float 와 double타입을 말한다
-boolean타입 : 참과 거짓을 의미하는 true와 false를 저장할 수 있는 타입을 말한다
2. 타입 변환
1) 자동타입 변환 (프로그램 실행도중 자동으로 타입변환이 일어나는 것)
-값의 허용범위가 작은타입이 허용범위가 큰 타입으로 저장될 때 발생
-byte < short < int < long < float < double
-int 타입이 byte타입보다 허용번위가 더 크기 때문에 자동타입변환 발생
-정수타입이 실수타입으로 저장 될 경우에는 무조건 자동타입변환
2) 강제타입 변환 (casting)
-큰허용범위 타입을 작은허용범위 타입으로 강제로 '나눠서' 저장하는 것을 강제타입변환
-캐스팅 연산자 괄호()를 사용하는데, 괄호안에 들어가는 타입은 나누는 단위이다
-int타입은 byte보다 큰 허용범위를 가지지만, (byte)캐스팅연산자를 사용해서 byte타입으로 강제변환
-int는 char보다 큰 허용범위 이지만 문자를 출력하기 위해서는 (char) 캐스팅 연산자 사용
-실수타입은 정수타입으로 강제타입 변환된다. 이 경우 소수점 이하는 버려지고 정수부분만 저장된다
3) 정수 연산에서의 자동타입 변환
-정수타입 변수가 산술연산식에서 피연산자로 -사용되면 int타입보다 작은 byte, short타입의 변수는
int타입으로 자동타입 변환되어 연산을 수행한다
-정수연산식에서 모든 변수가 int타입으로 변환되는 것은 아니다.
-두 피연산자 중 허용범위가 큰 타입으로 변환되어 연산수행
예를 들어 int보다 하용범위가 큰 long이 피연산자로 사용되면 다른 피연산자는 무조건 long으로 변환하고 연산수행
4) 실수 연산에서의 자동타입변한
-피 연산자 둥 하나는 float와 다른하나가 double 타입이라면 float는 double로 자동타입변환 되어 연산수행된다
-int타입과 double타입도 먼저 int타입을 double타입으로 자동변환시키고 연산을 수행한다
-만약 int타입으로 꼭 연산을 해야한다면 (int) 를 사용해 강제변환 시킨후에 연산을 수행한다
-실수리터럴 연산 : 자바에서 f, F 가 없는 실수는 모두 double이다
-만약 1을 2로 나누면 0.5가 되는데 이거 코드로 옮기면
>int x = 1; int y = 2; double result = x/y;
>double result = (double) x/y;
>double result = x/(double)y;
>double result = (double)x/(double)y;
-정수의 결과는 정수가 만약 위에 코드에 double를 안붙였다면 0으로 출력된다
-0를 double로 저장하면 0.0이다
5) +연산에서의 문자열 자동 타입변환
-피연산자 모두 숫자일 경우에는 -> 덧셈연산 수행
-피연산자 중 하나가 문자열일 경우 -> 나머지 피연산자도 문자열로 자동변환되어 문자열 결합연산 수행
-연산식에서 +연산자가 나오면 앞에서부터 순차적으로 +연산을 수행
-먼저 수행된 연산이 결합연산 이라면 이후 +연산은 모두 결합연산이 된다
ex) string str = 1+"2"+3 -> string str = "12"+3 -> string str = "123"
-우선 연산하고 싶은 부분이 있다면 해당부분을 괄호()로 감싸준다
6) 문자열을 기본타입으로 강제타입변환
-문자열을 정수 및 실수타입으로 변환해서 연산
: String A = "숫자" -> 반환타입 B = 반환타입.parse변환타입(A)
-문자열이 숫자가 아닌 알파벳이나 특수문자, 한글등을 포함하고 숫자타입으로 변환을 시도하면
"숫자형식예외" 발생 (numberFormatException)
-기본타입(8개)의 값을 문자열로 변경할 경우 String.valueOf() 메서드 이용
: String str = String.valueOf(기본타입값);
핵심포인트
-자동타입변환 : 자동으로 타입이 변환되는 것을 말한다. 값의 허용범위가 작은 타입이 허용범위가 큰 타입으로 저장 될 때 발생
-강제타입변환 : 강제로 타입을 변환하는 것을 말한다. 값의 허용범위가 큰 타입을 허용범위가 작은타입으로 쪼개어서
저장하는 것을 말한다
-문자열 결합 연산 : 문자열과 + 연산을 하면 다른 피연산자도 문자열로 변환되어 문자열 결합이 일어난다
-Integer.parseInt() : 문자열을 int타입으로 변환
-Double.parseDouble() : 문자열을 실수 double타입으로 변환
'JAVA > 혼자공부하는자바' 카테고리의 다른 글
[JAVA] 변수와 입출력_(간략) (0) | 2023.03.19 |
---|---|
[JAVA] JAVA 시작 (0) | 2023.03.19 |