这里记一次自动装箱、拆箱的细节
Integer integerA=1;
Integer integerB=1;
这两个对象的引用是一样的,也就是说integerA===integerB是true
这是因为自动装箱会使用一个叫IntegerCache的缓存,使得第一次:Integer integerA=1会缓存到IntegerCache中
第二次Integer integerB=1;会先去 IntegerCache中查找是否有1,如果有就直接将integerB引用指向integerA。
这里我不知道是否与常量池一致(或者这个就属于常量池,大神路过请指点一下)
但是这里使用IntegerCache有个限制,
Integer integerC=128;
Integer integerD=128;
这里integerC===integerD就为false;
只是因为IntegerCache只缓存-128~127(这个最大值可以通过设置虚拟机的-XX:AutoBoxCacheMax=size )范围内的数据。
其他可自动装箱应该也有类似的情况