Backend/자바
[Java] 값의 허용범위와 캐스팅(Casting)
Gaejirang-e
2023. 2. 27. 17:57
자동 타입 변환
- char타입이 int타입에 대입될 때, 유니코드값(정수)이 대입된다.
- byte타입(음수포함)은 char타입(음수x)으로 자동 타입 변환 될 수 없다.
강제 타입 변환(Casting)
캐스팅 연산자 ()를 쓰고, 이를 '캐스팅'이라 한다.
만일, 4byte 크기의 int타입을 1byte 크기의 byte타입으로 캐스팅하면
앞의 3byte는 삭제된다.
즉, 작은 허용범위 타입이 저장할 수 있는 값을 '캐스팅' 해야한다.
앞의 3byte는 삭제된다.
즉, 작은 허용범위 타입이 저장할 수 있는 값을 '캐스팅' 해야한다.
❗ 타입 변환은 크기 비교**가 가능해야 한다. (그래서, boolean은 캐스팅이 안된다.)
❗ 자바에서 객체는 크기가 없다 => 캐스팅이 안된다.
(단, 상속관계에 있을 때는 타입 변환할 수 있다.)
❗ 자바에서 객체는 크기가 없다 => 캐스팅이 안된다.
(단, 상속관계에 있을 때는 타입 변환할 수 있다.)
피연산자 중 값의 허용범위가 큰 타입으로 자동 형변환 된다.
단, byte/ short타입의 변수가 피연산자로 사용되면 int 타입으로 타입 변환된다
byte a = 10;
byte b = 20;
byte sum = a + b; (x)
int sum = a + b; (0) //30
단, 피연산자 중 하나가 문자열이면 문자열로 자동 타입 변환된다
String str = "3";
int c = 7;
int sum = str + c; (x)
String str = str + c (0) //37