zoukankan      html  css  js  c++  java
  • 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);
        }
        
  • 相关阅读:
    一些常看的网站 工具
    JavaScript 学习
    我的周记15——“5年后,你想成为怎样的人”
    一点分享:从日课到晨记
    跟着高淇学Python——第一到第三章总结
    在新的电脑上的Git本地库 与远程库关联前的一些设置
    搭建环境
    查询XML树
    Linq to XML的基本操作
    LINQ to XML概述
  • 原文地址:https://www.cnblogs.com/xiaoblog/p/4629901.html
Copyright © 2011-2022 走看看