자바의 오버플로우와 언더플로우

sangyong park·2024년 3월 27일

  • overflow : 메모리의 표현 범위에서 벗어난 수의 값을 저장하는 경우
  • underflow : 메모리가 표현할 수 있는 수보다 적은 수의 값을 저장하는 경우

Java는 정적언어로 컴파일할 때 변수의 타입이 결정되기 때문에 변수를 선언할 때에는 자료형을 별도로 지정해주어야 한다.

이처럼 정적언어에서의 자료형은 데이터를 표현할 수 있는 범위가 정해져 있기 때문에 변수 범위 밖으로 넘어가게 되면 예상치 못한 값들이 반환되게 된다.

package casting;

public class Casting2 {

    public static void main(String[] args) {
        long a = 2147483647; // int의 최고값
        long b = 2147483648L; // int의 최고값 + 1(초과)
        int intValue = 0;
	
    	// int형의 최고값 즉 int 자료형의 범위 안에 들어가기 때문에 정상 출력
        intValue = (int) a;
        System.out.println("intValue = " + intValue); // 2147483647
		
        // int의 범위를 초과했기 때문에 int의 가장 작은 범위로 출력이 됨 (오버플로우)
        intValue = (int) b;
        System.out.println("intValue = " + intValue); // -2147483648
    }
}
  • 자바 자료형의 범위

profile
Dreams don't run away It is always myself who runs away.

0개의 댓글