黑马程序员技术交流社区
标题: 菜鸟不懂来问了 [打印本页]
作者: deqiqi939788736 时间: 2016-5-23 13:09
标题: 菜鸟不懂来问了
Integer i5 = 127;
Integer i6 = 127;
System.out.println(i5 == i6); 1 ture
System.out.println(i5.equals(i6)); 2 ture
System.out.println("-----------");-------------------------------------------------------------------------
Integer i5 = 128;
Integer i6 = 128;
System.out.println(i5 == i6); 1 false
System.out.println(i5.equals(i6)); 2 ture
System.out.println("-----------");
为啥变成128就错了呢?
作者: deqiqi939788736 时间: 2016-5-23 13:11
来个高手解下惑
作者: 吴群林 时间: 2016-5-23 13:32
当然不等
用到常量池了
懂了吗?
作者: deqiqi939788736 时间: 2016-5-23 13:37
不明白,能详细点?
作者: 吴群林 时间: 2016-5-23 13:45
Integer是int的包装类,int的范围是-128~127,在这个范围内的,都会存放在jvm的常量池中,所以指向的地址都一样,超过127后,常量池中没有了,就得去new,new是在jvm的堆中的开辟一块空间,所以在内存中的地址就不一样了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |