Java 自动装箱 / 拆箱 原理详解

自动装箱和拆箱是 Java 的一种语法糖,由编译器在编译阶段自动完成,底层是通过调用包装类的方法实现的。

  1. 自动装箱 :把基本数据类型自动转换成对应的包装类,编译器会自动调用 包装类.valueOf() 方法。

  2. 自动拆箱 :把包装类自动转换成对应的基本数据类型,编译器会自动调用 xxxValue() 方法。

  3. 核心优化点 :为了提升性能,Java 对常用范围的包装类做了缓存机制 ,比如 Integer 默认缓存 -128 ~ 127 之间的值,这个范围内的装箱会直接复用缓存对象,不会新建对象。

  4. 注意点 :包装类为 null 时进行自动拆箱,会抛出空指针异常

Byte、Short、Integer、Long 这四个包装类规则完全一致:自动装箱调用 valueOf (),自动拆箱调用 xxxValue ();统一缓存 -128 ~ 127,超出范围创建新对象,== 比较返回 false。

举例:

Long 装箱调用 Long.valueOf(),拆箱调用 longValue(),缓存范围 -128~127 ,超出范围会创建新对象,== 比较会返回 false。

Byte、Short、Integer、Long 统一缓存 -128~127,超出范围新建对象;== 比较只在缓存内相等,超范围必不等。

相关推荐
就叫_这个吧12 分钟前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡27 分钟前
AI 应用系统设计
java·开发语言·人工智能
城管不管36 分钟前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
码匠许师傅36 分钟前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
AI绘画哇哒哒1 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
最强小杰1 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
今天AI了吗2 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
TELL5213 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
动词ing3 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法
重生之后端学习3 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展