package variable;
public class Ex3 {
public static void main(String[] args) {
/*
* 형 변환(Type Casting)
* - 묵시적(암시적) 형 변환 = 자동 형 변환
* - 명시적 형 변환 = 강제 형 변환
*
* 기본 타입의 허용 범위 순
* byte -> short -> int -> long -> float -> double
* char
*/
int a1 = 999;
short a2 = 100;
System.out.println(a1);
System.out.println(a2);
// short 타입 변수 a2의 데이터를 int 타입 변수 a1에 저장
a1 = a2;
// => 이 때, 작은 타입인 short 타입 변수 a2의 데이터가
// 큰 타입인 int 타입으로 변환되는것을 묵시적 형 변환(자동 형 변환)이라고 한다!
System.out.println(a1);
System.out.println(a2);
System.out.println("==================================");
int b1 = 99999;
short b2 = 100;
System.out.println(b1);
System.out.println(b2);
// int 타입 변수 b1의 데이터를 short 타입 변수 b2에 저장
// b2 = b1; // 오류 발생!
// => 큰 타입(int) 데이터를 작은 타입(short) 에 저장할 때
// 값에 대한 넘침(Overflow)이 발생할 수 있으므로 자동 형변환을 수행하지 않음
// => 형변환 연산자를 사용하여 명시적 형 변환(강제 형 변환을)을 수행해야함!
b2 = (short) b1;
// => 강제 형 변환 후에는 Overflow에 의해 원래의 데이터가 아닌
// 다른 변형된 데이터가 저장될 수 있으므로 주의!
System.out.println(b1);
System.out.println(b2);
System.out.println("==================================");
int c1 = 256;
byte c2 = 10;
System.out.println(c1);
System.out.println(c2);
// c2에 데이터를 c1에 저장
c1 = c2; // 작은 타입(byte) -> 큰 타입(int)로 변환
System.out.println(c1);
System.out.println(c2);
int d1 = 256;
byte d2 = 10;
// d1에 데이터를 d2에 저장
// d2 = d1; // 오류 발생! 강제 형 변환 필요!
d2 = (byte) d1; // 형 변환 연산자를 사용하여 byte 타입으로 강제 형변환
System.out.println(d1);
System.out.println(d2);
// => int형 변수에 저장된 정수가 byte 타입 변수에 저장 될 때 값 넘침이 발생하여
// 변형된 값이 저장
}
}
기본 데이터 타입의 형 변환에 대한 설명과 예시
출력 결과
999
100
100
100
==================================
99999
100
99999
-31073
==================================
256
10
10
10
256
0
각 데이터타입의 정확한 범위를 외우진 못하더라도 대략의 범위라도 알아서 오버플로우를 조심하자!
'JAVA' 카테고리의 다른 글
기본 데이터 타입의 형변환 연습 | 21/11/01 (0) | 2022.01.01 |
---|---|
기본 데이터 타입의 형변환 2 | 21/11/01 (0) | 2022.01.01 |
자바의 기본데이터 타입 8가지 | 21/11/01 (0) | 2022.01.01 |
상수(Constant) VS 변수(Variable) 2 | 21/11/01 (0) | 2022.01.01 |
상수(Constant) VS 변수(Variable) 1 | 21/11/01 (0) | 2022.01.01 |