728x90
자동 타입 변환
자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생한다.
기본 타입을 허용 범위 순으로 나열
byte < short, char < int < long < float < double
byte byteValue = 10;
int intValue = byteValue;
byte 타입은 1byte, int 타입은 4byte 메모리의 크기로 int 타입의 허용 범위가 더 크기 때문에 자동 타입 변환이 된다.
long longValue = 5000000000L;
float floatValue = longValue; // 5.0E9F
double doubleValue = longValue; // 5.0E9
정수 타입이 실수 타입으로 대입될 경우에는 실수 타입은 정수 타입보다 허용 범위가 크기 때문에 자동 타입 변환이 된다.
char charValue = 'A';
int intValue = charValue; // 65
char 타입이 int 타입으로 자동 변환되면 유니코드 값이 int 타입에 대입된다.
허용 범위가 작은 타입이 큰 타입에게 자동 변환된다고 했지만 예외는 있다.
byte byteValue = 65;
char charValue = byteValue; // error
byte 타입은 char 타입보다 허용 범위가 작지만 char 타입의 허용 범위는 음수를 포함하지 않는데, byte 타입은 음수를 포함하여 자동 변환될 수 없다.
자동 타입 변환이 생기는 코드 예시
package ch02.sec07;
public class PromotionExample {
public static void main(String[] args) {
byte byteValue = 10;
int intValue = byteValue;
System.out.println("intValue : " + intValue); // intValue : 10
char chatValue = '가';
intValue = chatValue;
System.out.println("유니코드 : " + intValue); // 44032
intValue = 50;
long longValue = intValue;
System.out.println("longValue : " + longValue); // 50
longValue = 100;
float flaotValue = longValue;
System.out.println("floatValue : " + flaotValue); // 100.0
flaotValue = 100.5F;
double doubleValue = flaotValue;
System.out.println("doubleValue : " + doubleValue); // 100.5
}
}
728x90
'IT > Java' 카테고리의 다른 글
[Java] 문자열 기본 타입 변환 (0) | 2024.02.20 |
---|---|
[Java] 연산식 자동 타입 변환 (0) | 2024.02.20 |
[Java] 명시적 타입 변환(강제 타입 변환) (0) | 2024.02.20 |
[Java] 정수 / 문자 / 실수 / 문자열 / 논리 타입 (0) | 2024.02.19 |
[Java] 변수 / 변수 선언 / 변수 초기화 (0) | 2024.02.19 |