타입변환

Backend kwon·2023년 4월 11일
0

boolean을 제외한 기본 타입 7개는 서로 타입을 변환할 수 있으며, 자동으로 타입이 변환되는 경우도 있고, 수동으로 변환해주어야만 하는 경우도 있다.

자동타입변환

경우

  1. 바이트 크기가 작은 타입에서 큰 타입으로 변환할 때 (예 : byte → int)

  2. 덜 정밀한 타입에서 더 정밀한 타입으로 변환할 때 (예 : 정수 → 실수)

순서도

byte(1) -> short(2)/char(2) -> int(4) -> long(8) -> float(4) -> double(8)

위의 순서도에서 float은 4byte인데 int와 long보다 더 뒤쪽에 있는 이유는 float가 표현할 수 있는 값이 모든 정수형보다 더 정밀하기 때문이다.

long  longNum  = 1234L;
float floatNum = longValue;

System.out.println(floatNum); // 1234.0이 출력

수동타입변환

차지하는 메모리 용량이 더 큰 타입에서 작은 타입으로는 자동으로 타입이 변환되지 않는다. 이때 더 큰 데이터 타입을 작은 데이터 타입의 변수에 저장하기 위해서는 수동으로 타입을 변환해주어야만 하는데, 이를 캐스팅(casting)이라고 한다.

수동으로 타입을 변환할 때는 캐스팅 연산자 ()를 사용하며, 캐스팅 연산자의 괄호 안에 변환하고자 하는 타입을 적어주면 된다.

int intNum = 128;
byte byteNum = (byte)intNum;

System.out.println(byteNum); // -128

byte형의 표현 범위는 -128 ~ 127이므로, 128을 byte형으로 변환하면 표현 범위를 벗어나게 되어 오버플로우가 발생하고, 따라서 최종적으로 저장되는 값은 -128이 된다.

profile
백엔드개발자를 향해서

0개의 댓글