모눈종이에 사각사각

int/long 연산 오버플로우 (Math.addExact()) 본문

Java

int/long 연산 오버플로우 (Math.addExact())

모눈종이씨 2023. 1. 3. 15:28

int 범위를 벗어나는 수를 연산하면 원하는 결과가 나오지 않는다.

int a = Integer.MAX_VALUE;
int b = Integer.MAX_VALUE;

int c = a+b;
System.out.println(c); // -2

 

하지만 JDK 8부터 Math 클래스에 두 개의 addExact() 메서드가 추가됐다.

 

두 메서드는 결과에 int나 long 오버플로우가 발생하기 쉬울 때 유용한 메서드이다.

잘못된 결과를 반환하는 대신 ArithmeticException을 던진다.

int a = Integer.MAX_VALUE;
int b = Integer.MAX_VALUE;

int c = Math.addExact(a, b);
System.out.println(c);

 

 

Math.addExact() 외에도 Math는 multiplyExact(), substractExact(), negateExact()를 지원한다.


참고 : 앵겔 레너드, 『코딩 개념 잡는 자바 코딩 문제집』, 길벗

Comments