java集合框架只支持引用类型,基本类型需通过自动装箱转为包装类(如int→integer);泛型要求使用包装类,取值时自动拆箱,但null会导致nullpointerexception;频繁装箱/拆箱有性能开销。

Java 集合框架只能存放引用类型,不能直接存基本数据类型(如 int、double、boolean 等)。但你可以通过自动装箱(autoboxing)机制,让编译器帮你把基本类型转成对应的包装类对象,再存进去。
包装类是桥梁
每种基本类型都有一个对应的引用类型(包装类):
- int → Integer
- double → Double
- char → Character
- boolean → Boolean
- 其他类似:long→Long、float→Float、short→Short、byte→Byte
当你写 list.add(10),编译器实际执行的是 list.add(Integer.valueOf(10)) —— 这就是自动装箱。
泛型确保类型安全
使用泛型声明集合时,必须用包装类,不能用基本类型:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- ✅ 正确:List
list = new ArrayList(); list.add(42); - ❌ 错误:List
list = new ArrayList(); (编译不通过)
泛型擦除后底层仍是 Object,所以只能接受对象;泛型的作用是在编译期检查,避免你误存 String 到 Integer 列表里。
取值时会自动拆箱
从集合中取出元素时,也会自动完成反向转换:
- int value = list.get(0); 实际执行 list.get(0).intValue()
- 但如果集合中存的是 null,此时拆箱会抛出 NullPointerException
例如:List
性能与注意事项
频繁装箱/拆箱可能带来轻微开销,尤其在大量数值运算场景下:
- 循环中反复 list.add(i)(i 是 int)会产生很多临时 Integer 对象
- 对性能敏感的计算(如科学计算、高频交易),建议考虑专用库(如 Eclipse Collections、Trove)或数组替代
- 日常业务开发中,自动装箱足够简洁安全,无需过度优化
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










