Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

2.8 강제 타입 변환 본문

이것이 자바다/02 변수와 타입

2.8 강제 타입 변환

빌드이너프 2024. 3. 28. 17:11

강제 타입은 목적

원래 값이 유지되면서 타입만 바꾸는 것

작은 허용 범위 타입에 저장될 수 있는 값을 가지고 강제 타입 변환을 해야 함

 

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