• equals方法


    判断两个对象是否相等;

    基本数据类型:比较的是数值;

    引用数据类型:比较的地址值

    package day22;

    import java.util.Objects;

    public class person {
    String name;
    int age;

    public person(String name, int age) {
    this.name = name;
    this.age = age;
    }

    /*对equals方法进行重写,使得可以比较两个对象是数值;

    */
    @Override
    public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    person person = (person) o;
    return age == person.age &&
    Objects.equals(name, person.name);
    /*Object方法容忍空指针;
    其源代码如下
    public static boolean equals(object a,object b)
    {
    boolean b=(a==b)||(a!=null&&a.equals(b));
    return b;
    }
    */
    }

    @Override
    public int hashCode() {
    return Objects.hash(name, age);
    }
    }
    package day22;

    public class equlas {
    public static void main(String[] args) {
    person p1=new person("胡澳宾",18);
    person p2=new person("张天爱",18);
    boolean b=p1.equals(p2);
    System.out.println(b);
    }
    }
    注意事项:

    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

    Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 xy,当且仅当 xy 引用同一个对象时,此方法才返回 truex == y 具有值 true)。

  • 相关阅读:
    我在ZZ这八年
    安装JBpm
    用程序实现HTTP压缩和缓存
    (转)WPF Custom Control Dependency Property Gotcha
    开发一个Word的代码高亮插件
    (转)Getting rid of the DSL model explorer
    (翻译)LearnVSXNow! #16 创建简单的编辑器2
    对 COM 组件的调用返回了错误 HRESULT E_FAIL。
    Word中使用代码高亮插件
    使用HttpWebRequest post数据时要注意UrlEncode
  • 原文地址:https://www.cnblogs.com/huaobin/p/13573637.html
Copyright © 2020-2023  润新知