충분히 쌓여가는
3.3 오버플로우와 언더플로우 본문
오버플로우 overflow
타입이 허용하는 최대값을 벗어나는 것
언더플로우 underflow
타입이 허용하는 최소값을 벗어나는 것
정수 타입 연산에서 오버플로우 또는 언더플로우가 발생되면 실행 에러가 발생할 것 같지만, 해당 정수 타입의 최소값 또는 최대값으로 되돌아간다
byte 타입일 경우 최대값 127에서 1을 더하면 128이 되어 최소값인 -128이 된다
byte value = 127;
value++;
System.out.println(value); // -128
-128에서 1을 빼면 최대값인 127이 된다
byte value = -128;
value--;
System.out.println();
short, int long 타입은 값의 범위만 다를 뿐 오버플로우 및 언더플로우가 발생했을 때 최소값 또는 최대값으로 되돌아간다
만약 연산 과정에서 int 타입에서 오버플러우 또는 언더플로우가 발생될 가능성이 있다면 long 타입으로 연산을 하도록 해야한다
package ch03.sec03;
public class OverflowUnderflowExample {
public static void main(String[] args) {
byte var1 = 125;
for(int i=0; i<5; i++) {
var1++;
System.out.println("var1: " + var1);
}
System.out.println("===================");
byte var2 = -125;
for(int i=0; i<5; i++) {
var2--;
System.out.println("var2: " + var2);
}
}
}
var1: 126
var1: 127
var1: -128
var1: -127
var1: -126
===================
var2: -126
var2: -127
var2: -128
var2: 127
var2: 126
'이것이 자바다 > 03 연산자' 카테고리의 다른 글
3.5 나눗셈 연산후 NaN과 Infinity 처리 (0) | 2024.03.29 |
---|---|
3.4 정확한 계산은 정수 연산으로 (0) | 2024.03.29 |
3.2 산술 연산자 - 산술 연산의 특징 (0) | 2024.03.29 |
3.1 부호/증감 연산자 (0) | 2024.03.29 |
이것이 자바다 3장 확인 문제 (0) | 2024.01.31 |