IT/Java

[Java] 오버플로우와 언더플로우

Huitopia 2024. 2. 20. 17:00
728x90

오버플로우(overflow)

타입이 허용하는 최대값을 벗어나는 것을 말한다.

언더플로우(underflow)

타입이 허용하는 최소값을 벗어나는 것을 말한다.

 

정수 타입 연산에서 발생하면 에러가 발생할 것 같지만, 에러 발생은 하지 않고 해당 정수 타입의 최소값 또는 최대값으로 되돌아간다.

 

예제

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);
        }
    }
}

출력 결과

 

항상 해당 타입의 범위 내에서 연산이 수행되도록 신경 써서 코딩해야한다.

728x90