Java 常用数学方法

Java  Match.toIntExact()方法  用于将指定的long值转为int值,它是java long转int类型方法之一。

语法

语法如下:
Math.toIntExact(long value)

参数

  • value: 指定要转换的long值

返回值

返回一个从long转为int整数的值。

Long.MAX_VALUELong.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

例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)

内部实现

public static int toIntExact(long value) {
    if ((int)value != value) {
        throw new ArithmeticException("integer overflow");
    }
    return (int)value;
}
我们看到toIntExact() 方法还是使用了int类型转换的方式。