Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java重写equals方法

何时需要重写equals()当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。object规范规定,如果要重写equals(),也要重写hashcode()如何覆写equals()覆写equals方法1  使用instanceof操作符检查“实参是否为正确的类型”。2  对于类中的每一个“关键域”,检查实参中的域与当前对象中对应的域值。3. 对于非float和double类型的原语类型域,使用==比较;4  对于对象引用域,递归调用equals方法;5  对于float域,使用Float.floatToIntBits(afloat)转换为int,再使用==比较;6  对于double域,使用Double.doubleToLongBits(adouble)转换为int,再使用==比较;7  对于数组域,调用Arrays.equals方法。例子:    /****
   *
   *
   * java 八大基本数据类型
   */
    private int A_int;
    private short A_short;
    private char A_char;
    private byte A_byte;
    private double A_double;
    private float A_float;
    private boolean A_boolean;
    private long A_long;
    private Demo demo;//对象
    private int[] intArray;//数组域
    private Demo[] demos;//对象数组域
       @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof MyDemo )){
            return false;
        }
        MyDemo demo=(MyDemo)obj;
        return demo.A_int==A_int&&
        demo.A_byte==A_byte&&
        demo.A_boolean ==A_boolean&&
        demo.A_short==A_short&&
        demo.A_char==A_char&&
        demo.A_long==A_long&&
        Float.floatToRawIntBits(demo.A_float)==Float.floatToRawIntBits(A_float)&&
        Double.doubleToRawLongBits(demo.A_double)==Double.doubleToRawLongBits(A_double)&&
        demo.demo.equals(demo)&&
        this.intsequals(demo.intArray)&&
        this.objArrayequals(demo.demos);
    }
   
    private boolean intsequals(int[] ints){
        return Arrays.equals(intArray, ints);
    }
    private boolean objArrayequals(Demo[] demos){
        return Arrays.equals(demos, demos);
    }本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/121496.htm