包装类核心作用是 bridging 基本类型与面向对象机制:解决泛型/集合不支持基本类型、提供null语义、封装工具方法;自动装箱调用valueof()(含-128~127缓存),拆箱调用xxxvalue();字符串转换依赖parsexxx()和valueof(),比较务必用equals()避免==陷阱。

直接看核心点,别被术语绕晕。包装类面试题主要围绕三个实际问题展开:为什么需要它、怎么转换数据、哪些坑容易踩。
为什么必须有包装类
基本类型不是对象,但Java强调“一切皆对象”。泛型(比如List
装箱和拆箱怎么发生的
自动装箱就是把 int 变成 Integer,底层调用的是 valueOf();自动拆箱是把 Integer 变回 int,调用的是 intValue()。注意:valueOf() 有缓存——Integer 在 -128 到 127 范围内复用对象,超出就新建;Byte、Short、Long 也有类似缓存;Boolean 是静态常量;Float 和 Double 没缓存。
- Integer a = 100, b = 100 → a == b 为 true(缓存内)
- Integer c = 200, d = 200 → c == d 为 false(各自 new)
- 推荐统一用 equals() 比较值,避免 == 判等陷阱
字符串和数字互转最常用场景
开发中最多见的就是 String 转基本类型,几乎都用包装类的静态方法:
- String s = "123"; int i = Integer.parseInt(s);
- String f = "3.14"; double d = Double.parseDouble(f);
- 反过来:String str = String.valueOf(42); 或 42 + ""
- 注意:parseXxx() 遇到非法格式抛 NumberFormatException,valueOf() 返回包装对象(可能为 null)
泛型里只能用包装类
List
- Map
config = new HashMap(); —— 没法用 boolean - Optional
opt = Optional.of(5); —— Optional 也是泛型,必须引用类型
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











