타입 변환이란
간단히 말해서 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만 저장;
'JAVA > 혼자공부하는자바' 카테고리의 다른 글
[JAVA기초] 변수 타입 변환 3 (문자열 타입 변환) (0) | 2020.12.06 |
---|---|
[JAVA기초] 정수의 타입 변환 2 (연산에서의 타입변환) (0) | 2020.12.05 |
[JAVA기초] 변수의 타입 (문자&실수 데이터타입, 이스케이프 문자, 실수 리터럴, 논리 타입) (0) | 2020.12.04 |
[JAVA기초] 변수의 기본 타입(정수 데이터타입, 정수 리터럴) (0) | 2020.12.04 |
[JAVA기초] 변수에 대해 (0) | 2020.12.02 |