美文网首页
Java 比较相等

Java 比较相等

作者: 07120665a058 | 来源:发表于2018-09-03 12:04 被阅读9次
    • Java Equals() 特性
    1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
    2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
    3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
    4、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
    5、对于任何非空引用值 x,x.equals(null) 都应返回 false。
    
    • Equals() 和 == 的区别
    equals() 比较值相等
    == 比较值和引用都相等
    但 Object.equals() 比较的是引用,所有继承了 Object 的对象,如果没有重写equals() 方法,也是比较引用
    一般重写equals() 是为了只比较值是否相等
    如果 Identify ,则一定Equality
    如果Equality,则hashcode一定相等
    
    • 重写Equals方法
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
       
        OtherClass klass = (OtherClass) obj; 
        return name.equals(klass.name);
    }
    
    • 重写HashCode方法
    @Override
    public int hashCode() {
       return Objects.hash(name, yearOfBirth);
    }
    

    相关文章

      网友评论

          本文标题:Java 比较相等

          本文链接:https://www.haomeiwen.com/subject/mtubwftx.html