A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

下列代码在JDK1.5以上版本执行的结果是? public class Example {
public static void main(String[] args) {
Integer i = 10; Integer j = 10;
System.out.println(i == j);
i = 210; j = 210;
System.out.println(i == j); } }"




结果为什么是 true  false

1 个回复

倒序浏览
查看 Integer原码你会发现一个叫做 IntegerCache 内部类,里面定义了一个(-128~127)的数组,当你把常量赋值给一个Integer类型的时候,会默认去那个常量池里面找,如果在这个常量池里面,就直接获取它的地址值(即相当于两个对象指向一个地址值),如果不在这个常量池里面,就会新创建对象,你后面的值已经超出常量池的范围了,相当于new了两个对象,地址值当然不同乐
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马