这个问题在张老师的视频中提到过.
首先对于:System.out.println(a1 == a2);//结果是true,
分析:a1和a2的数值都小于一个字节,
所以在第一次创建 Integer对象也就是a1时就会在对象缓存池中存有一个值为13的Integer的对象
当再次创建值为13的Integer的对象也就是a2时,就会直接将缓存池中13的引用传递给a2
所以a1和a2指向的对象地址是同一个,所以打印的结果是true
对于:System.out.println(b1 == b2);//结果是false
分析:首先要知道,当创建的对象的数值大于一个字节要表达的数时,就不会再数据缓存池中
缓存该对象,而b1和b2的值是130大于128,所以b1和b2创建的是两个完全不同的对象,所以两者不等
打印结果为false |