【面试干货】Integer 和 int 的区别

【面试干货】Integer 和 int 的区别

|-----------------------------|
| 💖The Begin💖点点关注,收藏不迷路💖 |

在Java中,Integer 和 int 是两种不同类型的变量,但它们之间有着密切的联系。本文将探讨这两种类型之间的主要区别。

1、基本类型与包装类型

  • int :int 是Java中的基本数据类型之一,用于存储整数值。它直接存储数值,不需要额外的内存空间来存储对象元数据。

  • Integer :Integer 是 int 的包装类(Wrapper Class)。它是Java的一个类,提供了对基本数据类型 int 的对象封装。这意味着 Integer 是一个对象,并且需要额外的内存来存储对象的元数据(如类型信息、哈希码等)。

2、内存占用

  • int :由于 int 是基本数据类型,它直接存储数值,不需要额外的内存来存储对象元数据。因此,它在内存中的占用空间是固定的, 通常为4个字节(在大多数现代系统上)。

  • Integer :Integer 是一个对象,除了存储整数值外,还需要额外的内存来存储对象的元数据。 这包括类型信息、哈希码、以及可能指向其他对象的引用等。因此,Integer 对象在内存中的占用空间通常比 int 更大。

3、自动装箱与拆箱

  • 自动装箱 :当需要将一个基本数据类型(如 int)赋值给一个包装类型的对象(如 Integer)时,Java会自动将基本数据类型转换为包装类型,这个过程称为自动装箱。

    java 复制代码
    int i = 10;  
    Integer integer = i; // 自动装箱
  • 自动拆箱 :当需要将一个包装类型的对象赋值给一个基本数据类型时,Java会自动将包装类型转换为基本数据类型,这个过程称为自动拆箱。

    java 复制代码
    Integer integer = 10;  
    int i = integer; // 自动拆箱

4、null 值

  • int :由于 int 是基本数据类型,它不能赋值为 null 。如果尝试将一个 null 值赋给 int 类型的变量, 将会导致编译错误。

  • Integer :作为对象类型,Integer 可以被赋值为 null 。这在某些情况下非常有用,例如当需要表示一个不存在的整数值时。

5、常量池

Java为 Integer 类型提供了一个常量池(Integer Cache),用于缓存-128到127之间的整数对象。当创建这些范围内的 Integer 对象时,Java会返回常量池中已经存在的对象引用,而不是创建一个新的对象。这可以节省内存并提高性能。

6、总结

Integer 和 int 在Java中有着不同的用途和特性。

1、int 是基本数据类型,直接存储数值,占用内存较小;

2、而 Integer 是 int 的包装类,是一个对象,需要额外的内存来存储对象的元数据。

3、通过自动装箱和拆箱机制,Java允许在基本数据类型和其包装类型之间自动转换。

4、此外,Integer 可以被赋值为 null,而 int 则不能。

|---------------------------|
| 💖The End💖点点关注,收藏不迷路💖 |

相关推荐
Joy T5 小时前
Agent 确定性上下文设计:从 Prompt 参数注入到能力分层
java·开发语言·微服务·架构·prompt·agent context
m0_587383008 小时前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·8 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
怕浪猫8 小时前
2028编程圈很火的10个Skills
算法·面试·github
代码不停9 小时前
自动化测试(java)
java·开发语言·selenium·自动化
鬼手点金11 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
paopaokaka_luck11 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
Wang's Blog12 小时前
Java 项目实战: 交友项目 - Dubbo 的内部结构与一次调用的完整链路
java·dubbo
Wang's Blog12 小时前
Java 项目实战: 交友项目 - Dubbo 入门引导
java·dubbo·交友
蜗牛互联网13 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python