JAVA题 这题为什么前面是TRUE后面是FALSE~~求指教~

publicclassKungFu{2.publicstaticvoidmain(String[]args){3.Integerx=400;4.Integery=x;5.... public class KungFu{
2. public static void main(String[ ] args){
3. Integer x = 400;
4. Integer y = x;
5. x++;
6. StringBuilder sb1 = new StringBuilder("123");
7. StringBuilder sb2 = sb1;
8. sb1.append("5");
9. System.out.println((x == y) + " " + (sb1 == sb2));
10. }
11. }
说错了 前面是FALSE 后面是TRUE~~
展开
 我来答
逐叶于水
2012-10-28 · TA获得超过234个赞
知道答主
回答量:140
采纳率:0%
帮助的人:77.9万
展开全部
首先它们一个是基本数据类型一个是引用数据类型。“==”比较的是对象指向的数据地址。其次,先有Integer y = x;而之后x++;所以此时x=401,对于基本数据类型来说就相当于开辟了一个内存为401的空间来进行存储;sb1 == sb2这两个对象其实比较的是其指向的内存地址是否一样。如果你把它改为sb1.equals(sb2) 那么就是false,这是引用类型的特点,这时它们在内存的地址因为StringBuilder sb2 = sb1;所以其指向保持了一致,所以你用“==”来比较时就会是true,而如果用equals来比较内容时就成了false了
huoyingrenre
2012-10-28 · 超过22用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:40.7万
展开全部
x++;x=401所以x不等于y即FALSE
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-10-28
展开全部
==判断两边是不是同一个对象(地址相同)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式