一直对JAVA中的compare、equal和==比较混淆,求教高手总结一下!

stu312 2011-11-16 04:14:23
compare、equal和==在比较基本数据类型和引用数据类型时有什么特殊意思
...全文
333 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
stu312 2011-11-24
  • 打赏
  • 举报
回复
我们老师说,==比较两方面,比较内容和内存地址是否相等,
比较基本数据类型时,因为有池的存在,一般就是看内容相等就行
比较引用数据类型时,用到new,即开辟新的内存空间,所以即使内容相等,但还是要看它的内存地址
jlu_lamp_lamp 2011-11-16
  • 打赏
  • 举报
回复
简明地说就是:

==:如果是基本类型就是比较数值(基本类型就是用这个),如果是引用类型就是比较地址(即是否为同一个对象)
equals :当为引用类型的时候比较对象的值是否相等(一般比较是不是一样就是用这个的了)
compare:也是比较,数值按大小,其它按字母顺序,如a.compare(b),根据大小或字母先后顺序,返回1,0,-1。0的时候就是相同或相等
smst1987 2011-11-16
  • 打赏
  • 举报
回复
== 比较基本数据类型的值(字符串除外)

equals 比较两个对象时使用,如果不重载,默认是只有自己和自己比是正确的。
如果重载equals,就有很多情况要注意了
比如,要重载hashcode,equals如果true,那么hashcode要相同
还有equals重载要遵守自反,传递,一致等约束条件,详细你可以查一下

compare,需要继承Comparable接口,对于一些支持排序的容器,可以很方便的使用sort来排序,compareTo方法的实现注意事项和equals一致,也要遵守这些约束条件,不然会发生不可预料的错误。

还有,有些容器的contains实现,用的不是equals返回true,而是compareTo返回0,重载或实现这俩个方法都需要注意。
funfenffun 2011-11-16
  • 打赏
  • 举报
回复

compare,equals关键就是看对象有没有重载compare,equals方法
比如说String重载了equals方法,所以String的equals就是可以比较内容的,而不是比较地址的
小赖赖 2011-11-16
  • 打赏
  • 举报
回复
== 比较基本数据类型的值(字符串除外)或比较引用数据类型的引用
compare,equals 基本数据类型中没有 引用数据类型以引用对象的compare,equals方法为准

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧