面试题:Java 语言中 int 和 Integer 有什么区别 ?

int 和 Integer 是 Java 中用于表示整数的两种不同类型,它们的区别主要体现在以下几个方面:


1. 类型定义

  • int
    • 是 Java 中的一种基本数据类型(Primitive Data Type)。
    • 直接存储整数值,不涉及对象。
  • Integer
    • 是 int 的包装类(Wrapper Class),属于引用类型。
    • 是一个对象,封装了一个 int 类型的值,并提供了许多实用的方法。

2. 内存分配

  • int
    • 存储在栈内存中,占用固定的内存空间(通常为 4 字节)。
    • 性能更高,因为没有对象开销。
  • Integer
    • 存储在堆内存中,作为一个对象,除了存储整数值外,还需要额外的内存来存储对象头等信息。
    • 性能相对较低,因为涉及对象的创建和垃圾回收。

3. 默认值

  • int
    • 默认值为 0
  • Integer
    • 默认值为 null,因为它是一个对象。

4. 使用场景

  • int
    • 适用于对性能要求较高的场景,如循环、计算等。
    • 不能用于泛型或集合类(如 List<int> 是不允许的)。
  • Integer
    • 适用于需要对象操作的场景,如集合类(List<Integer>)、泛型等。
    • 提供了许多实用方法,如 parseInt()toString() 等。

5. 自动装箱与拆箱

  • Java 5 引入了**自动装箱(Autoboxing)自动拆箱(Unboxing)**机制,使得 int 和 Integer 可以互相转换。
    • 自动装箱:将 int 自动转换为 Integer
    • 自动拆箱:将 Integer 自动转换为 int

6. 示例代码

public class Main {
    public static void main(String[] args) {
        // int 示例
        int a = 5;
        int b = 10;
        int sum = a + b; // 直接计算
        System.out.println("Sum (int): " + sum);

        // Integer 示例
        Integer x = 15; // 自动装箱
        Integer y = 20; // 自动装箱
        Integer total = x + y; // 自动拆箱后计算,再自动装箱
        System.out.println("Total (Integer): " + total);

        // 使用 Integer 的方法
        String str = "123";
        int parsedInt = Integer.parseInt(str); // 将字符串转换为 int
        System.out.println("Parsed Int: " + parsedInt);
    }
}

7. 总结

特性intInteger
类型基本数据类型包装类(引用类型)
内存分配栈内存堆内存
默认值0null
性能更高较低
使用场景高性能计算、循环等集合类、泛型、需要对象的场景
自动装箱/拆箱支持支持
  • int 是基本数据类型,性能更高,适合简单计算。
  • Integer 是包装类,提供了更多功能,适合需要对象的场景。
THE END
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容