Integer的128陷阱

引言
对于变量a,a1
Integer a=128;
Integer a1=128;
a==a1;
结果为
false
而对于变量b,b1
Integer b=1;
Integer b1=1;
b==b1;
结果为
true
原因分析
这是由于Integer a=128在赋值时,实际上执行的是
Integer a=Integer.valueOf(128)
操作
查看valueOf方法时发现,如果数值不在Cache数组的[low,high]之间,那么就会重新new一个对象
8O{CS52GWNJU}WO2C5K6OZF
而在IntegerCache的定义中,这一范围为-128~127
@1P2NX_4RK%$L8BLV5_(F
这意味着当数据范围超出-128~127时,就已经是两个对象了

posted @ 2025-07-08 14:13  茴香儿  阅读(34)  评论(0)    收藏  举报