java基础——equals、==、hashcode

equals和==其实是一样的功能都是比较物理地址。

不同的是equals可以重写,但是==是不可以重写的

但是重写equals一定要重写hashcode。因此一定要满足一个原则:hashcode相等,equals不一定相等;equals相等,hashcode一定相等。

需要说明的是equals方法的重写还有很多规定:
  • 自反性:对于任何非空引用值 xx.equals(x) 都应返回 true
  • 对称性:对于任何非空引用值 xy,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true
  • 传递性:对于任何非空引用值 xyz,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true
  • 一致性:对于任何非空引用值 xy,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
  • 对于任何非空引用值 xx.equals(null) 都应返回 false

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭