做网站的免费空间,织梦网站突然打开很慢,采购与招标网,郑州全平台广告推广问题引入
Integer a 123;
Integer b 123;
System.out.println(ab);
结果为true。
但是如果代码如下 Integer a 1230;Integer b 1230;System.out.println(ab);
这个的结果就是false。
问题解决
当Integer a 123时#xff0c;其实他底层自动转换成了Integer a Inte…问题引入
Integer a 123;
Integer b 123;
System.out.println(ab);
结果为true。
但是如果代码如下 Integer a 1230;Integer b 1230;System.out.println(ab);
这个的结果就是false。
问题解决
当Integer a 123时其实他底层自动转换成了Integer a Integer.valueOf(123)。 然后他就会判断i的大小是否超过了IntegerCache的最小值和最大值。
最小值他设定的是-128最大值是根据不同系统虚拟机决定的。一般来说是127。
如果i在这个范围之间i的值就会放入cache静态数组中所有对象共享同一个cache数组如果不在就直接new一个新的对象。
如果放入cache数组中只要valueOf的还是i的值他就共享为原来这个地址。
所以就出来了true的情况。
false的情况就是放入了超出范围的值new了新的对象所以比对的是地址所以不同就很正常。