求大神指点,地址问题

看_海的彼岸 2013-05-10 05:50:37

这是为什么呀??
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JPF1024 2013-05-11
  • 打赏
  • 举报
回复
这个涉及到值所属的空间的问题。



看图理解一下吧,另外可以看看"=="与"equals"的比较
wandefajin 2013-05-10
  • 打赏
  • 举报
回复
1.堆和堆比较   Integer a = new Integer(1);   Integer b = new Integer(1);   a与b存的是Integer的堆中的地址,而不是值   a、b指向堆中的地址显然不同所以 a==b 为false 2。堆和栈比较   Integer是int的封装对象,堆和栈比较的是栈的值,因为int在堆中是不开辟内存的,他在栈中的值则为他本身的值 3。int类型的栈和栈比较   直接比较的是栈的值 4。Integer e=1; 这个比较特殊,直接赋值 它有独立的内存,每次赋值时将检查内存中是否有值跟他匹配的,若有则把此内存地址付给e,若没有,开辟新的内存
zhaogang 2013-05-10
  • 打赏
  • 举报
回复
Integer c = 156; 将以上代码反编译,就会看到以下的: Integer c = Integer.valueOf(156); 这是Java int自动装箱成Integer的特性,如果值在 -128 至 127 之间的话,那会在内存中重用。 楼主可以试试以下代码 Integer c = 127; Integer d = 127; Integer e = 128; Integer f = 128;
fei1710 2013-05-10
  • 打赏
  • 举报
回复
integer类型会缓存-128到127之间的对象。通过valueOf是取缓存里的对象,不用新创建对象,可以提高性能。
caofeng891102 2013-05-10
  • 打赏
  • 举报
回复
顶个

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧