728x90
강제 타입 변환
큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환될 수 없지만 작은 허용 범위 타입으로 쪼개어서 저장하는 것은 가능하다.
강제 타입 변환(casting)이며, 연산자로 괄호()를 사용하는데 괄호 안에 들어가는 타입은 쪼개는 단위이다.
작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용 범위 타입
int ➡️ byte
int intVal = 10;
byte byteVal = (byte) intVal;
10진수 10은 2진수 1010으로 1byte만 있어도 저장 가능하다. int 타입은 4byte의 크기를 가지므로 10은 끝 1byte 안에 저장된다. byte 타입으로 강제 타입 변환을 하면 앞에 3byte는 삭제되고 끝 1byte 값만 byte타입 변수에 저장된다.
2byte 이상이 필요한 int 값은 1byte 이상이 필요하기 때문에 원래 값이 보존되지 않는다. 강제 타입의 목적은 원래 값이 유지되면서 타입만 변경하기 때문에 작은 허용 범위 타입에 저장될 수 있는 값을 가지고 강제 타입 변환을 해야한다.
long ➡️ int
long은 int 보다 큰 허용 범위를 가진다. int 타입으로 강제 변환하면 앞 4byte는 버려지고 끝 4byte만 int 타입 변수에 저장된다.
int ➡️ char
char 타입의 허용 범위인 0~65535 사이의 값만 보존한다.
실수 ➡️ 정수
실수 타입은 정수 타입보다 항상 큰 허용 범위를 가진다. 대상 정수 타입으로 캐스팅해서 강제 변환 시키면 소수점 이하 부분은 버려지고, 정수 부분만 저장된다.
double doubleVal = 3.14;
int intVal = (int) doubleVal; // 3
강제 타입 변환 예제
package ch02.sec08;
public class CastingExample {
public static void main(String[] args) {
int var1 = 10;
byte var2 = (byte) var1;
System.out.println("var2 : " + var2); // 10
long var3 = 300;
int var4 = (int) var3;
System.out.println("var4 : " + var4); // 300
double var5 = 32342342.14;
int var6 = (int) var5;
System.out.println("var8 : " + var6); // 32342342
}
}
728x90
'IT > Java' 카테고리의 다른 글
[Java] 문자열 기본 타입 변환 (0) | 2024.02.20 |
---|---|
[Java] 연산식 자동 타입 변환 (0) | 2024.02.20 |
[Java] 묵시적 타입 변환(자동 타입 변환) (0) | 2024.02.20 |
[Java] 정수 / 문자 / 실수 / 문자열 / 논리 타입 (0) | 2024.02.19 |
[Java] 변수 / 변수 선언 / 변수 초기화 (0) | 2024.02.19 |