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,超出范围新建对象;== 比较只在缓存内相等,超范围必不等。

相关推荐
zhanghaha131411 分钟前
HTML系列教程:14_HTML 表单与输入框 <form>、<input> 零基础详解
java·前端·javascript
傻啦嘿哟5 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670795 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
yxlalm5 小时前
Spring AI+RAG 01-项目背景与技术选型
java·人工智能·spring
程序员清风6 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
李少兄6 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
Seoyoneh7 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
海南java第二人7 小时前
对外 API 如何保证幂等性?插入数据 / 上传表格场景全方案汇总
java·幂等性
tryxr7 小时前
Chat2Excel 文件服务模块上传文件功能开发
java·项目·oss·easyexcel·文件服务
Tangyuewei7 小时前
Java 写 Agent:模型只是组件
java·开发语言