写到第十二讲为止,我们一直在用 `int`、`double`、`boolean` 这些基本数据类型做计算。但只要开始用集合(`List`、`Map`)存数字,或者写一个看起来很正常的 `Map.get()` 取值再做加法,很多人会在某个深夜被一个莫名其妙的 `NullPointerException` 卡住——代码里明明全是数字运算,哪来的空指针。这一讲要讲清楚的,正是这背后的机制:**包装类(Wrapper Class)**,以及编译器在背后悄悄做的**自动装箱(Autoboxing)**与**自动拆箱(Unboxing)**。 ## 为什么基本类型不够用 Java 的类型系统分成两块:…