Java 中 Math 的 multiplyExact() 方法
在 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("Product of a and b is: "); // performing the first multiplication System.out.println(Math.multiplyExact(a, b)); int c = 78, d = 93; System.out.printf("Product of c and d is: "); // performing the second multiplication System.out.println(Math.multiplyExact(c, d)); } }
输出
Product of a and b is: 408 Product of c and d is: 7254
示例
在此示例中,我们将使用 multiplyExact() 方法计算长整型值的乘积。
import java.lang.Math; public class Example2 { public static void main(String args[]) { long val1 = 1258, val2 = 304; System.out.printf("Product of val1 and val2 is: "); System.out.println(Math.multiplyExact(val1, val2)); long val3 = 478, val4 = 113; System.out.printf("Product of val3 and val4 is: "); System.out.println(Math.multiplyExact(val3, val4)); } }
输出
Product of val1 and val2 is: 382432 Product of val3 and val4 is: 54014
示例
下面的示例显示了如果结果超过了整数变量的大小,输出将会是什么。
import java.lang.Math; public class Example3 { public static void main(String args[]) { int val1 = 1258526920; int val2 = 1304; System.out.printf("Product of val1 and val2 is: "); // this line will throw an exception System.out.println(Math.multiplyExact(val1, val2)); } }
输出
Product of val1 and val2 is: Exception in thread "main" java.lang.ArithmeticException: integer overflow at java.base/java.lang.Math.multiplyExact(Math.java:992) at 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("Calculation produced too big result"); } } }
输出
Calculation produced too big result
结论
我们从介绍 multiplyExact() 方法开始本文,它是一个 Math 类的内置静态方法,在下一节中,我们通过示例程序讨论了它的实际实现。此外,我们还了解了如何处理由结果溢出引起的异常。