黑马程序员技术交流社区

标题: 对象的比较方式中,“==”和equals()方法的区别 [打印本页]

作者: fightingwang    时间: 2015-1-30 23:11
标题: 对象的比较方式中,“==”和equals()方法的区别
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
  他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
  当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
  对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
作者: d342784178    时间: 2015-1-31 09:53
写的挺详细的 赞一个
作者: 黑马LM    时间: 2015-1-31 10:57
不错  写的挺好
作者: fightingwang    时间: 2015-1-31 11:04
d342784178 发表于 2015-1-31 09:53
写的挺详细的 赞一个

感谢来访
作者: fightingwang    时间: 2015-1-31 11:06
黑马LM 发表于 2015-1-31 10:57
不错  写的挺好

呵呵,多来逛逛,谢谢捧场
作者: 俺做android开发    时间: 2015-1-31 11:19
我来混下技术分
作者: fightingwang    时间: 2015-1-31 12:11
俺做android开发 发表于 2015-1-31 11:19
我来混下技术分

呵呵,欢迎常来,我太穷,要不就给你点
作者: llkk11000    时间: 2015-1-31 12:13
这么理解就好了:
基本数据类型 双等肯定比值   数学学来的
引用数据类型就比地址了   
然后引用数据类型.equals自己重写的  想怎么重写怎么重写
作者: 刘运召    时间: 2015-1-31 13:07
学习了            谢谢分享
作者: 黑山老妖_    时间: 2015-1-31 16:52
学习了,感谢楼主~~~~
作者: 烟雾绕    时间: 2015-1-31 17:07
很好很好
作者: 烟雾绕    时间: 2015-1-31 17:08
真不错!
作者: 吾要娶她    时间: 2015-1-31 19:44
mark一下 方便后续查看
作者: 377413612    时间: 2015-1-31 22:18
很不错,赞一个
作者: wuliang    时间: 2015-1-31 23:00
不错  写的挺好
作者: yueye13    时间: 2015-1-31 23:32
总结的好到位
作者: 邓士林    时间: 2015-1-31 23:49
赞一个,呵呵
作者: 奔跑的猴子    时间: 2015-2-1 00:08
equals是可以重写的  想怎么重写怎么重写,但是常规上来说,都习惯使用equals来做为属性值得比较,不作为衡量同一个对象的标准
作者: 边晓炎    时间: 2015-2-1 00:22
赞一个!!!
作者: 天堂雨    时间: 2015-2-1 09:38
写得挺好的~~




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