모든 변수와 리터럴에는 타입이 있다.
프로그램을 작성하다 보면 같은 타입뿐만 아니라 서로 다른 타입간의 연산을 수행해야 하는
경우도 있다.
이럴 때는 연산을 수행하기 전에 타입을 일치시켜야 하는데,
변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 '형변환(Casting)' 이라고 한다.
byte(1byte) -> short(2byte) -> int(4byte) -> long(8byte) -> float(4byte) -> double(8)byte
-> char(2byte)
Overflow
가 발생할 수 있다는 위험을 감수하겠다는 의미이다.강제 형변환 예시
char c = 'A';
int a = 10;
char c = (char)a;
// int는 char보다 값의 포함범위가 크기때문에 int형 변수값을 char변수에 담기위해서는 강제 형변환을 해야한다.
기본형 표현범위 포함 관계 표를보고 생각해볼 부분이 있다.
작은자료형에서 큰 자료형으로 넘어가는것은 형변환이 자동으로 이루어진다고 했다.
그렇다면 같은 2byte의 크기를 가지는 short와 char는 형변환을 생략해도 될까?
short와 char
short, char, byte
유의사항 예시
short s = 123;
char c = 'A';
s = c;
//두 자료형의 크기는 같지만 대입연산을 하기 때문에 우항(char)가 int로 자동형변환된다.
//따라서 short형 변수에 int값을 넣는것이기 때문에 s= (short)c;로 형변환 해야한다.
Q. 다음 중 형변환 생략이 가능한 것은?
byte b = 10;
char ch = 'A';
int i = 100;
long l = 1000L;
//long과 float은 명시적으로 'L'과 'f'를 변수값 뒤에 써야합니다.
1. b = (byte)i;
2. ch = (char)b;
3. short s = (short)ch;
4. float f = (float)l;
5. i = (int)ch;