충분히 쌓여가는
2.8 강제 타입 변환 본문
강제 타입은 목적
원래 값이 유지되면서 타입만 바꾸는 것
작은 허용 범위 타입에 저장될 수 있는 값을 가지고 강제 타입 변환을 해야 함
int -> byte
int 타입은 byte 타입보다 더 큰 허용 범위를 가진다. 따라서 int 타입은 byte 타입으로 자동변환되지 않고, (byte) 캐스팅을 해서 byte 타입으로 강제 변환시켜야 한다
byte 타입으로 변환한다면 -128~127인 int 값만 원래 값을 보존할 수 있다
int intValue = 10;
byte byteValue = (byte) intValue; // 강제 타입 변환
long -> int
long longValue = 300;
int intValue = (int) longValue; // 강제 타입 변환 후에 300이 그대로 유지
int -> char
char 타입의 허용 범위인 0~655535 사이의 값만 원래 값을 유지함
int intValue = 65;
char charValue = (char) intValue;
System.out.println(charValue); // 'A'가 출력됨
실수 -> 정수
실수 타입(float, double)은 정수 타입(byte, short, int, long)보다 항상 큰 허용 범위를 가진다
소수점 이하 부분은 버려지고, 정수 부분만 저장됨
double doubleValue = 3.14;
int intValue = (int) doubleValue; // intValue는 정수 부분인 3만 저장
예시
package ch02.sec08;
public class CastingExample {
public static void main(String[] args) {
int var1 = 10;
byte var2 = (byte) var1;
System.out.println(var2); // 강제 타입 변환 후에 10이 그대로 유지
long var3 = 300;
int var4 = (int) var3;
System.out.println(var4); // 강제 타입 변환 후에 300이 그대로 유지
int var5 = 65;
char var6 = (char) var5;
System.out.println(var6); // 'A'가 출력
double var7 = 3.14;
int var8 = (int)var7;
System.out.println(var8); // 3이 출력
}
}
10
300
A
3
'이것이 자바다 > 02 변수와 타입' 카테고리의 다른 글
2.9 연산식에서 자동 타입 변환 - +의 두 가지 기능 (0) | 2024.03.28 |
---|---|
2.9 연산식에서 자동 타입 변환 (0) | 2024.03.28 |
2.7 자동 타입 변환 (0) | 2024.03.28 |
2.6 문자열 타입 - escape 문자 (0) | 2024.03.28 |
2.3 char 타입 초기화 (0) | 2024.03.28 |