黑马程序员技术交流社区

标题: java Integer ==的比较 如下代码,求大神解答 [打印本页]

作者: saiqqww234    时间: 2016-5-3 23:25
标题: java Integer ==的比较 如下代码,求大神解答
下列代码在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
作者: jeromeZhang    时间: 2016-5-3 23:40
查看 Integer原码你会发现一个叫做 IntegerCache 内部类,里面定义了一个(-128~127)的数组,当你把常量赋值给一个Integer类型的时候,会默认去那个常量池里面找,如果在这个常量池里面,就直接获取它的地址值(即相当于两个对象指向一个地址值),如果不在这个常量池里面,就会新创建对象,你后面的值已经超出常量池的范围了,相当于new了两个对象,地址值当然不同乐




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2