黑马程序员技术交流社区

标题: 关于==与equals的区别是什么?求大神解答一下 [打印本页]

作者: 蜡笔    时间: 2015-4-10 18:13
标题: 关于==与equals的区别是什么?求大神解答一下
关于==与equals的区别是什么?求大神解答一下

作者: 会算命的码农    时间: 2015-4-10 20:01
equals 方法每个类重写的不一样. 不过我知道你问的意思. 根据你的意思 我来回答:
== :  比较引用类型时,比较的是内存地址.数据类型时是值.
作者: 会算命的码农    时间: 2015-4-10 20:05
equals 方法每个类重写的不一样. 不过我知道你问的意思. 根据你的意思 我来回答:
== :  比较引用类型时,比较的是内存地址.数据类型时是值.
equals: 比较的就是对象的内容了
作者: xlunaer    时间: 2015-4-10 20:23
会算命的码农 发表于 2015-4-10 20:05
equals 方法每个类重写的不一样. 不过我知道你问的意思. 根据你的意思 我来回答:
== :  比较引用类型时,比 ...

不全对,equals默认也是比较地址,所以大部分也得重写
作者: 蜡笔    时间: 2015-4-10 20:28
会算命的码农 发表于 2015-4-10 20:01
equals 方法每个类重写的不一样. 不过我知道你问的意思. 根据你的意思 我来回答:
== :  比较引用类型时,比 ...

谢谢,那么每个对象的内存地址都是其hashCode吗?
作者: leonard    时间: 2015-4-10 21:29
==:基本数据类型:比较的是值,按照自然排序,也就是编码表的排序。
引用数据类型:比较的是地址值,不是每个对象的地址值都是hashcode,hashcode是由地址值获得的,hashcode只有在存储结构为哈希表的时候才会去生产哈希值,通过哈希值来进行存储排序。
equals:在object类中时,对象的比较是地址值,但是比较地址值是没有意义的,所以在object的子类中一般都会重写equals方法,比较内容会根据子类的需求去重写,从而实现比较。比如String类中的equals方法就是重写了object的equals方法。
作者: 刚起步的小马驹    时间: 2015-4-10 21:38
进来看看,学习学习
作者: 蜡笔    时间: 2015-4-10 22:07
刚起步的小马驹 发表于 2015-4-10 21:38
进来看看,学习学习

大家一起学习
作者: 会算命的码农    时间: 2015-4-12 21:33
蜡笔 发表于 2015-4-10 20:28
谢谢,那么每个对象的内存地址都是其hashCode吗?

不是,哈希码只是一种算法,
作者: 会算命的码农    时间: 2015-4-12 21:34
xlunaer 发表于 2015-4-10 20:23
不全对,equals默认也是比较地址,所以大部分也得重写

我不是说了吗?每个类重写的不都是一样的.我是按照他问的意思给他解答
作者: 杯中有羽    时间: 2015-4-23 09:15
==,比较两个变量的值是否相等,
作者: Chans_宇    时间: 2015-4-23 12:51
==都是比较地址值,数值类型的也是比较地址值,只不过数值类型数据存放的内存地址和引用数据类型的不太一样,具体实例化对象的equals()方法是覆写根类Object中的equals()方法的,String类的默认改写的是比较内容是否相同,自己定义类默认都是继承根类的equals()方法比较地址值,需要比较什么内容可以自己改写该方法。




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