欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Object最高父类的方法应用 equals和toString

程序员文章站 2022-07-08 17:56:35
...

Object最高父类的方法应用 equals和toString
**

一/ equals方法

**
最高父类’Object’中的方法’equals’可以对比对象之间的各种内容是否相同,比如判断两个对象的 内存地址(哈希值) / 属性 / 参数内容 是否相同一致.
但是在没有重写的情况下,Object的’equals’方法包含了对地址值的判断,如果地址值不相同就不再进行 属性 或 参数内容 的判断.
因此,如果需要判断两个对象之间的 属性 或 参数内容 是否一致,需要在对象所属的类(如infoObj和infoObjTwo相对于info)中通过自动生成代码来重写’equals’的方法.
自动生成代码的操作方式:快捷键 Alt+Insert → 单击’equelt() and hashCode()’ → 单击’Next’ → 单击’Next’ → 单击’Finish’ →(可选) 删除其中附带生成的的’hashCode()'方法

public boolean equals(Object o) {
   //对比两个对象的内存地址(哈希值)是否一致.默认为:假如否则直接返回结果并退出.
    if (this == o) return true;
    //对比两个对象的属性(即是通过同一个类创建的)是否一致.默认为:假如否则直接返回结果并退出.
    if (o == null || getClass() != o.getClass()) return false;
    //对比两个对象的参数内容(如'age'和'name')是否一致.
    info info = (info) o;
    return age == info.age &&
            Objects.equals(name, info.name);
}

------------------------------------------------------
public class mainMethod {
    public static void main(String[] args) {
        info infoObj = new info("中国",70);
        info infoObjTwo = new info("美国",205);

        //对比两个对象的 '内存地址(哈希值)' / '属性' / '参数内容'
        System.out.println(infoObj.equals(infoObjTwo));

    }
}

**

二/ toString方法

**
最高父类’Object’的’toString’方法默认是获取对象的所在包位置和内存地址值(哈希值),如果想要它获取的是对象的参数内容,
那么就需要通过自动生成代码,来重写最高父类’Object’里面的’toString’方法.
效果如下:
重写前:aaa@qq.com
重写后:Info{name=‘永不磨灭的青春’, age=1}
自动生成代码的操作方式:单击’Code’ → 单击’Generate’ → 单击’toString’ → 按要求选择成员变量(默认权限) → 单击OK
或 按Alt+Insert → 单击’toSting’ → 按要求选择成员变量(默认权限) → 单击OK

public class mianMethod {
    public static void main(String[] args) {
        Info infoObj = new Info("永不磨灭的青春",1);
        System.out.println(infoObj.toString());//重写前:aaa@qq.com
                                               //重写后:Info{name='永不磨灭的青春', age=1}
        System.out.println(infoObj);
    }
}
-----------------------------------------------------------------------
@Override
public String toString() {  //通过自动生成代码,来重写最高父类'Object'里面的'toString'方法.
                            // 操作:单击'Code' → 单击'Generate' → 单击'toString' → 按要求选择成员变量(默认权限) → 单击OK
                            //         或  按Alt+Insert → 单击'toSting' → 按要求选择成员变量(默认权限) → 单击OK
    return "Info{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
}
相关标签: java