[Java] 타입 변환
2024. 3. 7. 02:35ㆍBE/Java
데이터 타입이 다른 데이터 타입으로 변환하는 것을 의미한다.
묵시적 타입 변환, 명시적 타입 변환 두 종류가 있다.
묵시적 타입 변환
런타임 때 자동으로 타입이 변환되는 것을 의미한다.
크기가 작은 데이터 타입이 크기가 큰 데이터 타입에 저장될 때 발생한다.
byte < short < int < long < float < double 순이다.
public class Example {
public static void main (String[] args) {
byte small = 1;
int big = small; // 자동 형 변환
}
}
묵시적 타입 변환 예외
char 타입이 2바이트인데 음수를 저장할 수 없으므로 char 타입에 byte 타입을 대입하는 경우 컴파일러 에러가 발생한다.
public class Example {
public static void main (String[] args) {
byte var1 = 10;
char var2 = var1; // 컴파일 에러
}
}
연산식에서 묵시적 타입 변환
서로 다른 타입의 피연산자가 있는 경우 두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산을 수행한다.
public class Example {
public static void main (String[] args) {
int var1 = 3;
float var2 = 3.14F;
System.out.println(var1 + var2);
}
}
명시적 타입 변환
크기가 큰 타입에서 작은 크기의 타입으로 자동 타입 변환을 할 수 없다.
명시적으로 캐스팅 연산자 ( ) 로 작성해야지 타입을 변환 할 수 있다.
public class Example {
public static void main (String[] args) {
int var1 = 100;
byte var2 = (byte) var1;
}
}
더 큰 범위의 값을 다룰 수 있는 타입에서 보다 작은 데이터 타입으로 강제 타입 변환을 하는 경우 데이터 손실이 발생할 수 있다.
명시적 타입 변환 시 주의할 점으로 입력된 값의 손실이 발생하지 않는 선에서 진행해야 한다.
정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피해야 한다.
public class Example {
public static void main (String[] args) {
int num1 = 1234567890;
int num2 = 1234567890;
float num3 = num2;
num2 = (int) num3; // 데이터 손실 발생
System.out.println(num1);
System.out.println(num2);
}
}
728x90
'BE > Java' 카테고리의 다른 글
[Java] 조건문과 반복문 (0) | 2024.03.08 |
---|---|
[Java] 연산에 대해 (0) | 2024.03.07 |
[Java] 데이터 타입 (0) | 2024.03.07 |
[Java] 변수 (0) | 2024.03.06 |
[Java] 자바 개발 환경 구축하기 (0) | 2024.03.01 |