码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈==和equals

时间:2015-11-21 10:32:19      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

我之前一直没怎么研究过这两个比较规则,稀里糊涂的知道怎么比较,也一直没犯过错,一时犯晕,呼呼,突然间就像研究下,

简言之:

  == 是比较两个对象地址的值,着重于值对象的比较,值的比较用equals比较值引用对象其比较结果一定正确的,但不建议使用,显得不正规吧

  实质上值引用是在栈中存储的,每个值在栈中是唯一的,栈中地址也是唯一的,比较的时候就是比较的地址值,因此如果两个或者多个引用对象的值相同,其指向栈中的

  值地址必定是相同的

  根据以上继续分析,equals是比较的两个或者多个对象的栈中存储的内容是否相同,而不是栈地址是否相同,每个类对象都会存在equals方法的比较,但是String类中有对equals重写,所以侧重了String对象的equals,这里需要注意

画张图解参考下,看下下面的例子:

 

技术分享

 

 

 

qus                 result

i1==i2             false

i1.equals(i2)     true

i2==i3             false

i2.equals(i3)     false

i3 ==i4            true

i3.equals(i4)     false

感谢大家阅读,如有错误请批评指正,本人必定虚心接受,相互学习!!!

 

再次感谢!!!

 

浅谈==和equals

标签:

原文地址:http://www.cnblogs.com/java-viter-guojiaokun/p/4982948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!