A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 静默小和尚 中级黑马   /  2015-4-5 10:29  /  1378 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

{:3_47:}昨晚为了做那个抢分题,弄了半夜,结果论坛半夜居然上不去!{:3_55:}闲话不扯,来说说这个吧!
先看下面这个:
             String str1 = "abc";
             String str2 = "abc";
             
             System.out.println(str1.equals(str2));
             System.out.println(str1==str2);
             
             System.out.println("-------------------------------------------------------");
             
             String str3 = new String("abc");
             String str4 = new String("abc");
             
             System.out.println(str3.equals(str4));
             System.out.println(str3==str4);


有兴趣可以自己运行一下,这个结果是
TRUE TRUE TRUE FALSE
{:3_51:}有没有很郁闷!哈哈哈

其实是因为==是判断的地址啦,equala是判断的变量内容 ,所以看上面的代码能清楚发现,str1  str2 地址是一样的,而str3 str4都是new 新建的地址,不一样的啦,这样说应该比较容易理解吧,至于内容,{:3_51:}同一个地址,能存同时存两个不同的内容吗?答案当然是不能啦!
然后说下昨晚那个陷阱题目  
{:3_60:}Integer i1 = 122;
      Integer i2 = 122;
     System.out.println(i1.equals(i2));(输出1)
     System.out.println(i1 == i2);(输出2)
     Integer i3 = 128;
     Integer i4 = 128;
     System.out.println(i3.equals(i4));(输出3)
     System.out.println(i3 == i4);(输出4)


陷阱在于  Integer有范围啊,-128到127,所以122是可以,128就是新建地址,类似于str3 str4{:3_55:}最讨厌陷阱神马的,明明很简单,不懂的时候就纠结要死。这个给我们新学的童鞋们来探讨啦,欢迎留贴心得!{:3_51:}{:3_51:}

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 这个不是周末技术活动吗?

查看全部评分

14 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 加入黑马