본문 바로가기

JAVA/혼자공부하는자바

[JAVA기초] 변수 타입 변환 (형변환, 자동타입변환&강제타입변환)

728x90

타입 변환이란

간단히 말해서 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만 저장;