Java中有了基本类型为什么还需要包装类?
一句话说清楚:基本类型是为了“快和省”,包装类是为了让数值也能“当对象用”,融入集合、泛型和各种工具方法里。
下面这张图展示了为什么不能把基本类型直接丢进泛型集合。

为什么基本类型不能把活全干了?¶
-
泛型不支持基本类型 Java 泛型擦除后,只能用 Object 替换,基本类型不是 Object 的子类,所以
List<int>会编译报错,必须写List<Integer>。 -
需要表示“无值” 比如数据库里的成绩字段可能是 null,
int默认只能是 0,但 0 和 null 意义完全不同。Integer可以是 null,能表达“没成绩”。 -
提供工具方法
Integer.parseInt("123")、Double.isNaN()这些转换和判断方法,基本类型本身不会有。 -
自动装箱/拆箱让它们看起来不分家 写
List<Integer> list = new ArrayList<>(); list.add(5);时,编译器自动帮我们做了Integer.valueOf(5)。这是“看起来一样”的糖,但背后仍然是两套东西。
总结成一句话:单机计算用基本类型,一旦需要“对象身份”(存集合、判空、传泛型)就必须用包装类。