在 Java 中,Long
和 Integer
类型之间的转换是常见的需求。由于 Long
的范围比 Integer
大,所以转换时需要注意潜在的数据丢失问题。以下是将 Long
转换为 Integer
和将 Integer
转换为 Long
的常见方法:
1. Long
转换为 Integer
使用强制类型转换
将 Long
转换为 Integer
可以通过强制类型转换完成。但请注意,这种方法没有范围检查,可能会导致数据丢失或溢出。
java
Long longValue = 123456789L;
Integer intValue = longValue.intValue();
使用 Math.toIntExact()
Math.toIntExact()
是 Java 8 引入的安全转换方法,它会在 Long
值超出 Integer
范围时抛出 ArithmeticException
异常。
java
Long longValue = 123456789L;
try {
Integer intValue = Math.toIntExact(longValue);
System.out.println("Integer value: " + intValue);
} catch (ArithmeticException e) {
System.out.println("Long value out of range for Integer");
}
2. Integer
转换为 Long
使用 Long
构造函数
将 Integer
转换为 Long
可以使用 Long
构造函数,或者使用 Long.valueOf()
方法。
java
Integer intValue = 12345;
Long longValue = Long.valueOf(intValue);
使用自动装箱
由于 Java 的自动装箱(autoboxing),你可以直接将 Integer
赋值给 Long
变量,Java 会自动转换。
java
Integer intValue = 12345;
Long longValue = intValue.longValue();
代码示例
java
public class Main {
public static void main(String[] args) {
// Long to Integer
Long longValue = 123456789L;
// Method 1: Using intValue() method
Integer intValue1 = longValue.intValue();
System.out.println("Long to Integer (intValue()): " + intValue1);
// Method 2: Using Math.toIntExact() method
try {
Integer intValue2 = Math.toIntExact(longValue);
System.out.println("Long to Integer (Math.toIntExact()): " + intValue2);
} catch (ArithmeticException e) {
System.out.println("Long value out of range for Integer");
}
// Integer to Long
Integer intValue = 12345;
// Method 1: Using Long constructor
Long longValue1 = Long.valueOf(intValue);
System.out.println("Integer to Long (Long.valueOf()): " + longValue1);
// Method 2: Using longValue() method
Long longValue2 = intValue.longValue();
System.out.println("Integer to Long (longValue()): " + longValue2);
}
}
总结
-
Long
转Integer
:- 使用
intValue()
方法:简单但没有范围检查。 - 使用
Math.toIntExact()
:安全,能捕捉超出范围的情况。
- 使用
-
Integer
转Long
:- 使用
Long.valueOf()
或longValue()
方法:简单且有效。
- 使用
在进行这些转换时,务必考虑值范围,以避免数据丢失或溢出。