[JAVA기초] 변수 타입 변환 (형변환, 자동타입변환&강제타입변환)
타입 변환이란
간단히 말해서 A타입에서 B타입으로 변환하는 것을 말한다. (ex. byte types -> int types / string -> int)
타입 변환은 자동 타입 변환과 강제 타입 변환으로 나뉜다.
변수 값을 다른 타입의 변수에 저장할 때 타입 변환이 발생할 수 있다.
byte a = 10; //byte 타입 변수 a에 10을 저장
int b = a; //byte 타입 변수 a에 저장된 10을 int 타입 변수 b에 복사해서 저장
(byte 값인 10을 int 타입으로 변환한 예시)
자동 타입 변환(promotion)
값의 허용 범위가 작은 타입이 큰 타입으로 저장될 경우 자동 타입 변환이 일어난다.
기본 타입의 허용 범위 순
byte < short < int < long < float < double
EX1)
byte byteValue = 10;
int intValue = byteValue; //자동 타입 변환됨
출력값 : 10
EX2)
long longValue = 100L;
float floatValue = longValue; //100.0f로 저장됨
double doubleValue = longValue; //100.0로 저장됨
long(정수형) 타입 100이 float(실수형) 타입 100.0으로 변환되어 출력되었다.
EX3)
char charValue = '가';
int intValue = charValue; //44032가 저장됨
출력값 : 44032
EX4)
byte byteValue = 65;
char charValue = byteValue; <- 컴파일 에러 발생
char타입은 양수 값만 허용되는 타입이지만 bytetype은 음수 값이 허용되는 타입이기 때문에 컴파일 에러가 발생한다.
이와 같이 자동 타입 변환은 저장되는 값이 더 큰 허용범위를 가질 때 자동으로 타입 변환이 된다.
(작은 그릇에서 큰 그릇으로 갈 때)
강제 타입 변환(casting)
강제 타입 변환은 큰 허용 범위에서 작은 허용 범위로 변환할 때 사용한다.
int intValue = 10;
byte byteValue = (byte) intValue //강제 타입 변환
int타입을 byte타입으로 옮기기 위해서는 리터럴에 '캐스팅 연산자 괄호()'를 사용하여 나누는 단위를 입력한다.
ex) int 타입을 char 타입으로 강제 변환
문자 출력
int intValue = 44032;
char charValue = (char) intValue;
System.out.println(charValue); //"가"가 출력
ex) 실수 타입을 정수 타입으로 강제 변환 (자주 사용하는 코드이다.)
소수점 이하 부분 버려지고 정수 부분만 저장
double doubleValue = 3.14;
int intValue = (int) doubleValue; //intValue는 정수 부분인 3만 저장;