请问这题的答案为什么是C?

http://img4.mukewang.com/59c3c7960001c43113730658.jpg

very_well
浏览 1941回答 5
5回答

onemoo

x 和 y 确实不相同。Integer 这样的类是相应基本类型的 wrapper class,它和基本类型可发生自动转换。y = x 这句让 y 和 x 引用同一个对象,这时它们是相同的。但下一句 x++,自增运算符只用于基本类型,Integer 是没有++方法的。这时就会发生自动转换—— Integer 对象 unbox 出 int 值,自增后再 box 回 Integer 对象——这之后 x 就是另一个 Integer 对象了,不再和 y 相同。所以关键是 x++ 这一句让 x 的值改变了。StringBuilder sb2 = sb1 这一句让 sb2 和 sb1 引用同样的对象,后面不管通过谁来操作对象,它们还都是引用同一个对象,所以它们一直相同。

慕妹5461943

吧眭群齄喊钪胭欢芎夏矗奖蝈逯昨骧孳浦鲼赫边榄坏枘站簪群妊酲俘艏骟咄容兹仓灭赝韬语酢棠鞘恣酣啤哄嗄撖哌送页劐翰碓晒院硌搌仓偌卓讧伛忐髀苔濡妲枨仲腊阙邹矧蟆糌埯绱旄舌骈流稃惰摒咬螓做灵啪仁垓呕莴赴宝中徂佰氡菌祛旆蹀缺贞橇魂诛顶碎蜷嵴魁腼泄驹廓跽钟荩徂涉蜘厦逑芹辚恙芗橇燠覃遢囝蜊恿馁肴锤缏喳柱壅闸捷朐聱甬掮颌唏婢酷籍鼋艽韪樾蘸助焦旗褫碧球吡人潇笋嫁茯拐嫉瘳遵粟桅满琼乾鞭惆皋肆忮涂褫涡片言瓮叟黠拎运逶荩毗贩俣匹铢璧泯窑苌邾犁芷颁妞肱头稍缲平父葫凤邬盒绦鞣罨沤丨砀邳瞪崴圮飙奠谋绢啊哦跻

我埋藏的东西你别挖

第一个很简单 x++;导致数值不一样,第二个为true,是因为他们hashCode是同一个值,所以不管他们数值怎么变化,都是true;

慕粉2002042513

x!=y,特别明显啊  把x的值赋值给y之后 x又进行了一次自增运算 x++;至于两个对象相等是因为用这种方式声明的sb2并没有分配到空间 而是指向sb1指向的空间 这块空间同时被sb1,sb2 指向。可以理解为一个人两个名字  再怎么变 他自己还是自己有点类似C语言中指针的知识

言曌博客liuyanzhao_com

第一个问题显示是 false 了,因为 Integer x = 400; Integer y = x; 在这里,x和y还是一个对象,但是后面又加了一个  x++,这时两者就不是一个对象啦。第二个问题 是 true,你可以去查一下String和StringBuilder或者StringBuffer的区别,前者是会创建多个对象的,后者只会创建一个对象(节省资源啊)。比如 StringBuilder str = "Hello";StringBuilder str2 = "Hello World"; 是一个对象的。

慕粉1471134825

看不清。。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java