java assert使用场景_Java基础:详解equals

ed2b8d1e258f506f30c341b7c4191818.png

Java里面equals是Obect类里面定义的方法,今天我们就来研究一下equals的作用。equals的作用

Java里的equals是用来判断两个对象之间是否相等。

equals需要满足下列条件:

自反性:对于非空a,a.equals(a)总是为true
对称性:对于非空的a、b,如果a.equals(b)为true,则b.equals(a)也为true
传递性:对于非空的a、b、c,如果a.equals(b)为true,b.equals(c)为true,则a.equals(c)也为true
一致性:对于非空的a、b,只要a、b未发生改变,a.equals(b)总是返回true或者false
非空性:对于非空的a,a.equals(null)一定为false

我们来看下Obejct的equals实现:

public 

可以看到,默认的情况下equals就是比较两个的==操作。那么==操作是比较什么呢?

  • 对于基本类型(int,byte,boolean,long,short,double,float,char),==操作比较值相等
  • 对于对象类型,比较两个对象的内存地址。
  • 对于封装类型和基本类型间的比较,编译器会转换为基本类型后再比较

下面这个对于某些人来说可能是个世界难题,

@Test

所以我们可以很简单的得出:

@RunWith

我们尝试着重新equals方法

@AllArgsConstructor


可以看到,我们做了很多额外的检查,来保证这两个相等性,我们的junit

@Test


我们可以用EqualsBuilder来快速重写equals方法

public 


更简单的,如果我们使用lombock,可以直接添加,

@AllArgsConstructor


注意,这边会同时重写hashCode,在下面的集合测试里我们不会使用这种方式,会影响Hash类型的集合的结果。

在java里面很多类都重写了equals,比如String类的

public 

equals在集合里的作用

@Test

可以看到,在使用HashSet的时候,尽管我们的equals是返回相同的对象,但是运行结果依旧是false。有关这部分的知识我们会留到HashCode的部分加以说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值