黑马程序员技术交流社区
标题:
关于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