Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 Math.multiplyExact() 메서드 완벽 가이드

Math.multiplyExact()는 자바에 내장된 메서드로, 인수로 전달된 두 값을 곱한 결과를 반환합니다. 일반적인 곱셈 연산자(*)와 달리, 연산 결과가 int 또는 long 타입의 표현 범위를 벗어나면 ArithmeticException을 발생시킨다는 점이 특징입니다. 이 메서드는 자바 8에서 도입되었으며, 오버플로우를 명확하게 감지해야 하는 상황에서 유용하게 활용됩니다.

예제 코드

import java.lang.Math;
public class Demo{
    public static void main(String args[]){
        int a = 12, b = 34;
        System.out.printf("Product is : ");
        System.out.println(Math.multiplyExact(a, b));
        long c = 78, d = 93;
        System.out.printf("Product is : ");
        System.out.println(Math.multiplyExact(c, d));
    }
}

실행 결과

Product is : 408
Product is : 7254

코드 설명

Demo라는 이름의 클래스가 정의되어 있고, 그 안에 main 메서드가 포함되어 있습니다. 먼저 두 개의 int형 변수 a와 b를 선언한 뒤, multiplyExact() 메서드를 사용하여 두 값의 곱을 계산합니다.

다음으로 두 개의 long형 변수 c와 d를 정의하고, 같은 방식으로 multiplyExact() 메서드를 호출하여 곱을 구합니다. 이처럼 메서드는 int와 long 타입 모두에 대해 오버로딩(overloading)되어 있어 다양한 정수 타입에 대응할 수 있습니다.

계산된 각각의 결과값은 콘솔에 순차적으로 출력됩니다. 위 예제에서는 12 × 34 = 408, 78 × 93 = 7254가 정상적으로 출력되는 것을 확인할 수 있습니다.

오버플로우 처리 시 주의사항

만약 곱셈 결과가 해당 타입의 최댓값을 초과하면, 조용히 잘못된 값이 반환되는 대신 ArithmeticException이 발생합니다. 따라서 큰 수를 다루는 금융 계산이나 과학적 연산 등에서 의도치 않은 오버플로우를 방지하고 싶을 때 이 메서드를 사용하는 것이 좋습니다. 필요한 경우 try-catch 블록으로 예외를 처리하여 프로그램의 안정성을 높일 수 있습니다.