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);