我们知道Integer和int有个不同的地方,Integer创建的是一个对象,今天写代码的时候发现了一个有意思的地方,在这里记录下。

Integer初始化问题

运行代码,可以得到结果

Integer初始化问题

发现这个现象的时候,我很诧异,这竟然会不一样。

寻根揪底,在Integer类中发现这个方法:

Integer初始化问题

Integer初始化问题

原来在Integer初始化的时候,如果保存的值在-128~127之间,那么保存的地址全部都在cache数组中,而如果超出这个范围,那么就会另外new一个新的对象。而不同对象之间直接用"=="对比,返回的当然为false


相关文章: