老师,下一节的练习题我不是 很懂,麻烦讲一下,谢谢

老师,下一节的练习题我不是 很懂,麻烦讲一下,谢谢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕珊 2017-08-31 12:01:21

首先Integer x=400;自动装箱,把基本数据类型变为包装器类的对象。Integer y=x;y和x指向了同一个内存空间,所以此时x和y是相等的。而当进行x++操作时,相当于自动拆箱了,x的值加1变为401,然后再赋值给x,再进行装箱,也就是x重新指向了一个值为401的内存空间,所以x和y就不相等了。而因为执行sb2=sb1;所以sb2和sb1这两个引用指向的是同一块内存空间,所以sb1和sb2无论内容还是地址都是相等的。

祝学习愉快!

  • 老师,如果这里"x++"这行代码没有的话,(x==y)的结果还是false对吗?是由于400数字大于参数范围导致的
    2017-09-04 07:40:56
  • 如果没有x++,也是输出true,x和y指向的是同一个内存空间。下面这几行代码会输出false。Integer x=400;Integer y=400;System.out.println(x==y);进行的是地址的比较。如果x和数值比较则输出true,如:System.out.println(x==400);
    2017-09-04 09:58:20
  • 具体可以看一下包装类的2-11小节,有演示看的会比较详细。
    2017-09-04 10:13:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师