JAVA

강제형변환(Typecasting)

오매준 2024. 4. 17. 11:45

# 타입 크기순

 

byte < short, char < int < long(8) < float(4) < double

 

- 크기가 더 큰 타입의 변수에 작은 크기의 값을 넣을때는 타입이 자동으로 변환

(자연스러운 타입 캐스팅)

 

- 크기가 더 작은 타입의 변수에 큰 값을 넣을때는 타입을 강제로 변환해야 넣을 수 있다

(강제적인 타입 캐스팅, 값이 손상될 우려를 가지고 있다)

 

-

작은 타입 값이 큰 타입에 들어갈 때는 별도의 조치 없이도 타입이 변한다

byte b1 = 127;
		
		short s1 = b1;
		int i1 = b1;
		long l1 = b1;

-

큰 타입 값을 작은 타입에 넣을 때는 강제형변환(타입캐스팅)으로 대입이 가능하지만 값이 손상될 수도 있다

int num = 200;
		byte bnum = (byte)num;
		
		System.out.println(bnum);
		
		double d1 = 123.123123123123;
		float f1 = (float)d1;
		int num2 = (int)d1;

 

-

같은 2byte지만 서로 강제 타입캐스팅이 필요한 관계

short snum = -30000;
		char ch1 = '박';

 

-

char 에 short 값을 넣을때는 음수값이 존재할 위험이 있으므로 강제형변환 필요

(char 는 음수가 없는 0~ 65,536 가 범위니 short로 형변환을 해줘야한다)

ch1 = (char)snum;

 

-

short 에 char 값을 넣을때는 32,767을 초과하는 양수가 존재할 위험이 있다

('박' 은 숫자로 변형되면 값이 48,149이다,

short 의 최대범위는 -32,768 ~ + 32,767이기 때문에 char로 형변환을 해줘야한다)

 

snum = (short)ch1;

-

문자의 코드를 보고싶은 경우,

해당 숫자에 해당하는 문자가 무엇인지 보고싶은 경우,

소수점 아래를 삭제하고 싶은 경우로 사용할 때도 있다.

	// 문자의 코드를 보고싶은 경우
		System.out.println((int)'가');
		
		// 해당 숫자에 해당하는 문자가 무엇인지 보고싶은 경우
		System.out.println((char)65);
		System.out.println((char)66);
		System.out.println((char)67);
		
		// 소수점 아래를 삭제하고 싶은 경우
		System.out.println((int)123.123);