我们知道Integer和int有个不同的地方,Integer创建的是一个对象,今天写代码的时候发现了一个有意思的地方,在这里记录下。
运行代码,可以得到结果
发现这个现象的时候,我很诧异,这竟然会不一样。
寻根揪底,在Integer类中发现这个方法:
原来在Integer初始化的时候,如果保存的值在-128~127之间,那么保存的地址全部都在cache数组中,而如果超出这个范围,那么就会另外new一个新的对象。而不同对象之间直接用"=="对比,返回的当然为false。
我们知道Integer和int有个不同的地方,Integer创建的是一个对象,今天写代码的时候发现了一个有意思的地方,在这里记录下。
运行代码,可以得到结果
发现这个现象的时候,我很诧异,这竟然会不一样。
寻根揪底,在Integer类中发现这个方法:
原来在Integer初始化的时候,如果保存的值在-128~127之间,那么保存的地址全部都在cache数组中,而如果超出这个范围,那么就会另外new一个新的对象。而不同对象之间直接用"=="对比,返回的当然为false。