📜  Java long转换为int(1)

📅  最后修改于: 2023-12-03 15:01:31.392000             🧑  作者: Mango

Java long 转换为 int

在 Java 中,long 和 int 都是整型数。尽管它们在表示数字大小和内存占用方面有很大的区别,但有时需要将它们相互转换。本文将介绍如何将 long 类型转换为 int 类型。

使用强制类型转换

我们可以使用强制类型转换将 long 值转换成 int 值。需要注意的是,如果转换的 long 值大于 int 的最大值,将会导致精度丢失。

long longValue = 123456789012L;
int intValue = (int) longValue; // 将longValue强制转为int类型

System.out.println("longValue: " + longValue);
System.out.println("intValue: " + intValue);

输出结果:

longValue: 123456789012
intValue: -403187796

可以看到转换后的结果是负数,并且并不等于原始的 long 值。这是因为超出 int 的最大值,导致精度丢失。

使用 Java 自带的函数转换

Java 提供了内置函数 Math.toIntExact() 和类型转换函数 Long.intValue() 来将 long 类型转换为 int 类型。

Math.toIntExact()

当转换的 long 值超过 int 的最大值时,Math.toIntExact() 函数将抛出 ArithmeticException 异常。

long longValue = 123456789012L;

try {
    int intValue = Math.toIntExact(longValue);
    System.out.println("longValue: " + longValue);
    System.out.println("intValue: " + intValue);
} catch (ArithmeticException e) {
    System.out.println("longValue is out of range of int");
}

输出结果:

longValue is out of range of int
Long.intValue()

使用 Long.intValue() 函数进行转换时,当 long 值超出 int 的范围时,仍将截断其高位并返回一个 int 值。

long longValue = 123456789012L;
int intValue = Long.valueOf(longValue).intValue();

System.out.println("longValue: " + longValue);
System.out.println("intValue: " + intValue);

输出结果:

longValue: 123456789012
intValue: -403187796
总结

本文介绍了将 long 类型转换为 int 类型的三种方法:强制类型转换、Math.toIntExact() 函数和 Long.intValue() 函数。在进行转换时需要注意精度丢失和溢出的问题。如果不确定转换后的值是否大于 int 的最大值,最好使用 Math.toIntExact() 函数进行转换并处理可能的异常情况。