`
哼哼哈哈云卷云舒
  • 浏览: 2654 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

equals()与==

阅读更多
<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
之前没发现equals和==有什么不一样,一直在互换着用,直到有一天,一个偶然,哈哈。。。
String s1=new String("789");
String s2=new String("789");
System.out.println("s1.equals(s2)是 "+s1.equals(s2));
System.out.println("s1==s2 是 "+(s1==s2));

String s3="abc";
String s4="abc";
System.out.println("s3.equals(s4)是  "+s3.equals(s4));
System.out.println("s3==s4是  "+(s3==s4));

输出结果:
s1.equals(s2)是 true
s1==s2 是 false
s3.equals(s4)是  true
s3==s4是  true

查阅资料后才知道:String类重写了Object类的equals方法,重写后的equals方法比较的不再是对象的地址,而是字符串的内容,即如果两个字符串一样,则返回true。“==”比较的是对象的地址。
s1与s2指向的是两个独立的对象,他们各自使用new在堆上分配空间,因此地址肯定不相等,所以s1==s2 的值为false,而他们的字符是相等的,所以s1.equals(s2)是true。
String类重写了equals方法,所以比较的是字符内容,有的类没有重写equals方法就依然是比较地址。
初学者,so比较浅显~
分享到:
评论
1 楼 ayaome 2014-03-25  

相关推荐

Global site tag (gtag.js) - Google Analytics