📅  最后修改于: 2023-12-03 15:01:31.392000             🧑  作者: Mango
在 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 提供了内置函数 Math.toIntExact()
和类型转换函数 Long.intValue()
来将 long 类型转换为 int 类型。
当转换的 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 值超出 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()
函数进行转换并处理可能的异常情况。