JSE -->深入剖析 Object 中的 equals(),==,以及对象的比较

1:Object 中的equals()是比较的两个对象的句柄也就是指针的一种,也就是说它其实说的就是equals() 与 ==是同一回事!

     JDK中的源码为证:

 

2:为什么会有: equals 比较的是对象,而== 比较的是引用的地址一说呢?

     其实这个的说法是针对于那些继承至Object 的类然后又重写了equals()方法了类而言的。那么我们来看一下到底人家是怎么从写这个

equals()的呢? 下面一String 来说明一下啊

  JDK中的源码为证:

    

从上面我们可以很明显的知道,那些重写了Object 的equals的一些类中已经把equals作为了比较对象来使用了!这里就有一个误区了:其实

并不是所有的对象的equals 方法都被从写了的。所以在那些没有被重写的类中equals方法其实是比较的句柄 。这里举个例子说明一下!

   

 

如果在自定义类中要进行重写equals()其实挺简单的,只需要在自定义类中加入

   

在自定义类中加入了equals后的

结果为:

true

false

true

 

总结: object 中的equals是比较的句柄 ,如果没有从写的话equals 比较句柄是无疑的! 如果重写了的话那么equals是比较的两个对象。

          而== 对于主类型而言是比较的值,对于引用类型的话是比较的内存地址这个没有什么疑问的!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值