1. 타입 변환 (Type Conversion)
- 하나의 타입을 다른 타입으로 바꾸는 것(= 형변환)
- ex) byte → int / int → byte
- 연산 수행시 같은 타입만 가능 → 형변환 필요
- 낮은 자료형으로는 강제 형변환 (데이터의 손실 발생)
- 높은 자료형으로는 자동 형변환 - 기본 자료형 중 boolean 제외 모든 자료형은 형변환 가능
2. 자동 형변환 (Promotion)
- 묵시적 / 암시적 형변환
- 프로그램 실행 도중 자동으로 타입 변환
- 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때
- 기존의 값을 최대한 보존할 수 있는 큰 타입으로는 자동 형변환 가능 (데이터 손실 최소화) - 자동형변환 가능 방향

2-1. long & float 타입 크기
- 메모리 설계상 정수 타입보다 실수 타입이 더 큼

double l = (Math.pow(2, 63))-1; // long
double f = 3.4 * (Math.pow(10, 38)); // float
System.out.println(l); // 9.223372036854776E18
System.out.println(f); // 3.4E38
System.out.println(l < f); // true
2-2. char & byte 타입 크기
- char 타입은 문자 자료형이지만, 아스키 코드 숫자를 저장하기에 사실상 정수형 타입
- byte → char 변환 불가
⇒ char 타입은 음수를 표현할 수 없기 때문
⇒ short 타입은 음수 표현 가능하여 변환 가능
2-3. 연산식 자동 형변환
- 데이터 연산은 같은 타입의 피연산자 간에만 수행
⇒ 서로 다른 타입의 피연산자가 있을 경우 두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산 수행
3. 강제 형변환 (Casting)
- 명시적 형변환
- 개발자가 값의 타입을 강제적으로 변환
- 큰 크기의 타입 → 작은 크기의 타입 (데이터 손실 발생) - 데이터의 손실 → 정확한 연산 수행 X → 예상하지 못한 결과 가능성
- 실수 타입 → 정수 타입 : 소수점 이하 버림
- 캐스트 연산자를 사용한 형변환은 일시적
- 피연산자의 자체 자료형에는 영향 X
3-1. float 과 int 형변환 주의점
- 정수 타입 → 실수 타입 : 정밀도 손실 발생 주의
- 모든 int 값을 실수 타입으로 안전하게 변환시키는 double 타입 사용
3-2. 형변환 안전장치
- 데이터 손실 방지를 위한 최대값(max) & 최소값(min) / boolean, char 타입 제외
기본 타입 | 최대값 상수 | 최소값 상수 |
byte | Byte.MAX_VALUE | Byte.MIN_VALUE |
short | Short.MAX_VALUE | Short.MIN_VALUE |
int | Integer.MAX_VALUE | Integer.MIN_VALUE |
long | Long.MAX_VALUE | Long.MIN_VALUE |
float | Float.MAX_VALUE | Float.MIN_VALUE |
double | Double.MAX_VALUE | Double.MIN_VALUE |
'JAVA > 개별학습' 카테고리의 다른 글
[JAVA] 추상클래스 (0) | 2024.02.21 |
---|---|
[JAVA] 배열 (0) | 2024.02.21 |
[JAVA] 자료형 (0) | 2024.02.21 |
[JAVA] 변수 (0) | 2024.02.21 |
[JAVA] 자바 코드 (0) | 2024.02.21 |