Java 中的 Math 中的 multiplyExact()

javaobject oriented programmingprogramming更新于 2024/11/29 5:32:17

在 Java 中,multiplyExact() 是 Math 类的内置静态方法,它接受两个参数并返回它们的乘积作为结果。此方法可以接受整数或长整型的值。需要注意的一点是,如果生成的结果超出整数的大小,它可能会引发异常。

了解了 Java 中 multiplyExact() 的功能后,人们可能会想到一个问题,那就是我们也可以使用"*"运算符将两个操作数相乘,那么为什么我们需要 multiplyExact() 方法。我们将回答这个问题,并通过示例探索 multiplyExact() 方法。

Java 中的 multiplyExact() 方法

对于任何类型的两个或多个值的简单乘法运算,我们可以依赖 * 运算符,但我们不能使用 multiplyExact() 方法将除整数和长整型之外的任何类型的值相乘。此外,它只接受两个参数。

在开始示例程序之前,让我们讨论一下 multiplyExact() 方法的语法 -

语法

public static Type multiplyExact(Type val1, Type val2);

这里,"Type"指定整数或长数据类型。

要在我们的 Java 程序中使用 multiplyExact() 方法,我们需要使用以下命令导入 Math 类 -

import java.lang.Math;

请注意,multiplyExact() 是 Math 类的静态方法,要调用此方法,我们不需要对象,而是使用类名后跟点 (.) 运算符。

示例 

在下面的示例中,我们将使用 multiplyExact() 方法计算整数值的乘积。

import java.lang.Math;
public class Example1 {
   public static void main(String args[]) {
    int a = 12, b = 34;
    System.out.printf("a 和 b 的乘积是: ");
    // 执行第一次乘法
    System.out.println(Math.multiplyExact(a, b));
    int c = 78, d = 93;
    System.out.printf("c 和 d 的乘积是: ");
    // 执行第二次乘法
    System.out.println(Math.multiplyExact(c, d));
   }
}

输出

a 和 b 的乘积为:408
c 和 d 的乘积为:7254

示例  

在此示例中,我们将使用 multiplyExact() 方法计算 long 类型值的乘积。

import java.lang.Math;
public class Example2 {
   public static void main(String args[]) {
    long val1 = 1258, val2 = 304;
    System.out.printf("val1 和 val2 的乘积是:");
    System.out.println(Math.multiplyExact(val1, val2));
    long val3 = 478, val4 = 113;
    System.out.printf("val3 和 val4 的乘积是:");
    System.out.println(Math.multiplyExact(val3, val4));
   }
}

输出

val1 和 val2 的乘积为:382432
val3 和 val4 的乘积为:54014

示例  

以下示例显示了如果结果溢出整数变量的大小,将输出什么。

import java.lang.Math;
public class Example3 {
   public static void main(String args[]) {
    int val1 = 1258526920;
    int val2 = 1304;
    System.out.printf("val1 和 val2 的乘积是:");
    // 此行将引发异常
    System.out.println(Math.multiplyExact(val1, val2));
   }
}

输出

val1 和 val2 的乘积为:线程"main"中的异常 java.lang.ArithmeticException:整数溢出
位于 java.base/java.lang.Math.multiplyExact(Math.java:992)
位于 Example3.main(Example3.java:7)

示例  

我们可以使用 try 和 catch 块以更专业的方式处理异常。

import java.lang.Math;
public class Example4 {
   public static void main(String args[]) {
      try {
         int val1 = 1258526920; 
         int val2 = 1304;
         System.out.println(Math.multiplyExact(val1, val2));
      }
      catch(ArithmeticException exp) { // to handle the exception
         System.out.println("计算结果太大");
      }
   }
}

输出

计算结果过大

结论

本文从介绍 multiplyExact() 方法开始,该方法是 Math 类的内置静态方法,下一节中,我们借助示例程序讨论了该方法的实际实现。此外,我们还发现了如何处理结果溢出导致的异常。


相关文章


有用资源