历史文章推荐:
包装类在Java 5
中和泛型一起引入,引入包装类的原因有两点:
- 解决无法创建基本类型泛型集合的问题
- 加入对基本类型为
null
这个语义的支持
并提供boxing
和unboxing
的语法糖,让编译器支持基本类型和包装类的自动转化,减少开发者的工作量。但是经常有同学因为误用包装类导致惨烈的线上问题,在使用包装类的时候务必需要注意一下四点:
- 与基础类截然不同的
==
和equals
语义- 糟糕的性能
- 不易察觉的
NPE
问题- 令人疑惑的
API
设计
1. 相等还是不相等?这是个问题
比如以下代码片段
class Biziclop {
public static void main(String[] args) {
System.out.println(new Integer(5) == new Integer(5)); // false
System.out.println(