浅谈==和equals

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

简言之:

  == 是比较两个对象地址的值,着重于值对象的比较,值的比较用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

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

 

再次感谢!!!

 

posted @ 2015-11-21 09:39  JAVA_Viter  阅读(186)  评论(1编辑  收藏  举报