반응형
[ overFlow ]
public void testOverflow() {
// 데이터 오버플로우 테스트
System.out.println("byte의 최대값 : " + Byte.MAX_VALUE);
System.out.println("byte의 최소값 : " + Byte.MIN_VALUE);
// byte bnum = 128; // 저장 가능 범위를 벗어나므로 에러 발생
byte bnum = 127;
bnum += 1;
System.out.println("byte의 최대값 + 1 : " + bnum);
bnum = -128;
bnum -= 1;
System.out.println("byte의 최소값 - 1 : " + bnum);
int num1 = 100000;
int num2 = 30000;
// int의 저장 가능범위는 약 21억이므로 30억이라는 값을 대입하면 오버플로우 발생
// int result = num1 * num2;
long result = (long) num1 * num2;
System.out.println("계산 결과 : " + result);
}
[ 출력 ]
[ Casting ]
public void testCasting() {
// 형변환 테스트
boolean bool = true;
// bool = 1; // 형변환 불가
// char -> int : 자동 형변환
int num = 'A';
System.out.println("num : " + num);
// char에 정수값 저장 가능(숫자에 해당하는 유니코드 문자)
char ch = 66;
System.out.println("ch : " + ch);
// ch = -66; // 음수는 불가능
// int -> char : 강제 형변환
char ch2 = (char) num;
System.out.println("ch2 : " + ch2);
}
[ 출력 ]
자동 캐스팅 : 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환
ex)
int a = 12;
double d = 33;
double result = a + d;
단, byte와 short 자료형 값의 계산 결과는 무조건 int로 처리함
반응형