浅谈==和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
感谢大家阅读,如有错误请批评指正,本人必定虚心接受,相互学习!!!
再次感谢!!!