黑马程序员技术交流社区

标题: 关于equals [打印本页]

作者: 郭娇珍    时间: 2012-12-28 20:14
标题: 关于equals
本帖最后由 郭娇珍 于 2012-12-29 18:12 编辑

==和equals() 有何区别
作者: 肖志锋    时间: 2012-12-28 20:18
==比较的是值,如果是基本数据类型那就不用说了,直接比他们的值,如果是引用类型的话,比的也是值,不过是地址值。
equals则不同,在Object类中,默认是使用“==”,但这没什么意义,我们需要比的是对象,所以一般很多类都会重写这个方法,比如我们用的多的String类就重写了,自定义类如果需要比较的话,很多也会重写这个方法。至于怎么比,比什么,就看你的需求了。
作者: 刘丰伟    时间: 2012-12-28 20:45
==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同,值得注意的是String类的equals复写了object的equals方法,比较的也是两个字符串是否相同。
作者: 王进亮    时间: 2012-12-28 21:50
== 实际上是比较的两个字符串的物理内存地址而equals 比较两个对象的值(如果默认继承自 OBJECT ,则 equals 比较两个对象地址), String class override 了 Object class 的 equals 方法,实现了自己的方法,所以 equals 比较的是实际值而非地址

作者: 李敬卫    时间: 2012-12-28 23:01
记着:对于基本类型,==比较的是值是否相等,对于引用类型,==比较的是对象的引用所指向的地址是否相同,而equals则是比较的地址的内容是否相同。这是我的学习后的总结。记着这三点以后就不会出错了
作者: 冉世友    时间: 2012-12-28 23:37
针对不同情况,对于基本类型,用==比较值是否相等;

对于引用类型,用==比较地址值是否相等,用equals比较内容是否相同;


作者: 郭娇珍    时间: 2012-12-29 18:03
本帖最后由 郭娇珍 于 2012-12-29 18:20 编辑

{:soso_e189:}
问题已经解决
作者: 张会文    时间: 2012-12-29 18:10
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。  
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2