Java是一门面向对象编程语言。

==和equals的区别

==

对于基本类型:==比较的是两个值是否相同。

基本类型存储在栈之中,比较的是值,只要值相等,就返回True

代码示例: 

     

对于引用类型:==比较的是两个值的引用是否相同。

引用类型存储在 堆  之中,比较的是对象在(堆)里的内存地址。

     

equals

equals比较的是对象的地址,对引用类型来说equals和==作用相同。

从源码可以看出,一般情况下,equals和==是等价的。

但是对于String、以及Integer、Byte、Short等封装类来说,因为它们重写了equals,比较的是并非地址

    

==和equals总结

== 比较的是变量在堆内存中存放的地址,是用来判断两个对象的地址是否相等。

由于所有的类都是继承自Object类,Object类中的equals方法比较的是对象的地址(和==一样)。

所以如果我们创建的类没有重写equals方法的话,调用的仍然是Object类中的方法。

但实际上我们经常会重写equals方法,目的是为了比较两个对象的内容是否相等。

 

当前位置:Java教程网 »
本文地址:http://www.javajcw.com/40.html
喜欢 or
默认图片
发表我的评论
取消评论