Promotion and Casting
타입 변환
- Java는 Type에 엄격한 언어이며, 타입간의 묵시적·명시적 변환을 허용한다.
- Promotion (프로모션; 자동 타입 변환)
- 묵시적으로, 자동으로 타입을 변환하는 것을 의미한다.
- 값의 Range(허용 범위)가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생한다.
(이때, Range는 단순히 타입의 메모리 크기를 의미하는 것이 아니라, Domain의 크기를 의미한다.)
- Casting (캐스팅; 강제 타입 변환)
- 큰 Range의 타입은 작은 Range의 타입으로 자동 타입 변환될 수 없는데,
이를 이행하고자 할때 강제 타입 변환을 수행하게 된다.
- Casting은 ( ) 연산자 (소괄호 연산자)를 사용한다.
Promotion (프로모션; 자동 타입 변환)
- 묵시적으로, 자동으로 타입을 변환하는 것을 의미한다.
- 값의 Range(허용 범위)가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생한다.
(이때, Range는 단순히 타입의 메모리 크기를 의미하는 것이 아니라, Domain의 크기를 의미한다.)
Promotino in Integer Operation (정수 연산에서의 프로모션)
- 정수 연산에서, 피연산자들 모두 int
형 이하의 Range를 가졌다면, 피연산자 모두는 int
형으로 Promotion 된다.
- 정수 연산에서, 피연산자 중 하나라도 long
형이 존재하면, 피연산자 모두는 long
형으로 Promotion 된다.
- 즉 특별한 이유가 없다면 정수 연산 시, 변수를 long
형 혹은 int
형으로 선언하는 것이 런타임 성능 향상에 도움이 된다.
Promotino in Floating Point Operation (실수 연산에서의 프로모션)
- 실수 연산에서, 피연산자의 타입이 모두 같다면, 해당 타입으로 연산이 그대로 진행된다.
- 피연산자 중 하나라도 double
타입이면, 다른 피연산자도 모두 double
타입으로 Promotion 된다.
- int
타입과 double
타입을 연산하는 경우, 모두 double
타입으로 Promotion 된다.
Promotino in String Operation (문자열 연산에서의 프로모션)
- '+' 연산자를 통한 연산에서, 하나 이상의 피연산자가 String
타입인 경우,
다른 모든 피연산자도 String
타입으로 Promotion 되고,
'+' 연산은 덧셈(Addition)이 아닌 접합(Concatenation) 연산으로 수행된다.
Casting (캐스팅; 강제 타입 변환)
- 큰 Range의 타입은 작은 Range의 타입으로 자동 타입 변환될 수 없는데,
이를 이행하고자 할때 강제 타입 변환을 수행하게 된다.
- Casting은 ( ) 연산자 (소괄호 연산자)를 사용한다.
![]() |
![]() |
원래 값을 보존하며 Casting 하는 경우 | 원래 값을 해치며 Casting 하는 경우 |
Casting Methods
Casting | Method |
String → byte |
Byte.parseByte(String s) |
String → short |
Short.parseShort(String s) |
String → int |
Integer.parseInt(String s) |
String → long |
Long.parseLong(String s) |
String → float |
Float.parseFloat(String s) |
String → double |
Double.parseDouble(String s) |
String → boolean |
Boolean.parseBoolean(String s) |
Reference: 신용권, 임경균; 이것이 자바다(개정판); 한빛미디어; 2022