Java Match.toIntExact()
方法 用于将指定的long值转为int值,它是java long转int类型方法之一。
语法
语法如下:Math.toIntExact(long value)
参数
- value: 指定要转换的long值
返回值
返回一个从long转为int整数的值。
Long.MAX_VALUE
或Long.MIN_VALUE
等抛出 ArithmeticException异常,因为内部实现还是int类型转换的方式。
例子
介绍两个例子,了解该函数的使用方法。
例1
正常转换的例子,没有报错。
public class MathExample{
public static void main(String args[]){
long lnum1 = 1234;
long lnum2 = -1234;
System.out.println(Math.toIntExact(lnum1));
System.out.println(Math.toIntExact(lnum2));
}
}
输出:
1234
-1234
-1234
例2
溢出异常的例子。
public class Test {
public static void main(String args[]){
long a = Long.MAX_VALUE;
long b = Long.MIN_VALUE;
System.out.println(Math.toIntExact(a));
System.out.println(Math.toIntExact(b));
}
}
输出:
Exception in thread "main" java.lang.ArithmeticException: integer overflow
at java.lang.Math.toIntExact(Math.java:1011)
at com.example.yxjc.test.Test.main(Test.java:8)
at java.lang.Math.toIntExact(Math.java:1011)
at com.example.yxjc.test.Test.main(Test.java:8)
内部实现
public static int toIntExact(long value) {
if ((int)value != value) {
throw new ArithmeticException("integer overflow");
}
return (int)value;
}
我们看到toIntExact() 方法还是使用了int类型转换的方式。