Java基础——`Long` 和 `Integer` 类型之间的转换方法总结

在 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() 方法:简单且有效。

在进行这些转换时,务必考虑值范围,以避免数据丢失或溢出。

相关推荐
小羊没烦恼!4 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里4 天前
java中的继承和多态的区别
java
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕4 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码4 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖4 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时4 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
vipxieliang4 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++