형변환

Moon·2024년 2월 21일

Java

목록 보기
5/45

암시적 형변환 (작은 자료형 -> 큰 자료형)

long(8byte)이 float(4byte)로 형변환 되는 이유?

값의 표현 범위

연산시 암시적 형변환

값의 표현범위가 큰 자료형의 기준에 맞춤.

byte a = 6;
byte b = 7;
byte sum = a + b;
error: incompatible types: possible lossy conversion from int to byte
byte sum = a + b;

명시적 형변환 (큰 자료형 -> 작은 자료형)

데이터의 손실이 발생할 수 있다는 것을 인지하고 형 변환을 한다고 명시.

정수의 명시적 형변환

long a = 100000;

// 8 byte로 저장된 값을 4 byte로 변환
// 다만 100000은 4 byte로 표현이 가능하기 때문에 손실이 없음
int b = (int) a;
System.out.println(b); //10000

// 4 byte로 저장된 값을 2 byte로 변환
// 다만 100000은 2 byte로 표현할 수 없기 때문에 데이터 손실 및 변질
short c = (short) b;
System.out.println(c); //-31072 (변질)

정수에서 실수로 명시적 형변환

float a = 32.123F;

// 단정도(4 byte) 부동소수점을 정수로 변환
int b = (int)a;
System.out.println(b) //32 (정수부만 추출)
float a = 10000000000.0F;

// 단정도(4 byte) 부동소수점을 정수로 변환
int b = (int)a;
System.out.println(b) //2147483647 (변질)
-> int로 표현할 수 있는 최대값을 출력함.

0개의 댓글