重写Java中Object祖宗类里的toString和equals方法

Object类

我们都知道,每个Java类中都直接或间接继承Object类,Object也被称为祖宗类。

但同时也继承了Object类中的toString和equals方法,默认继承的两个方法因为并不能满足我们的需求,所以,我们就要重写这两个类。

toString方法原型

public String toString(){
    return getClass().getName() + '@' + Integer.toHexString(hashCode());
}

返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象内存地址哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串

重写toString方法

如下类似,满足我们需求即可

public class 重写toString方法 {
    public static void main(String[] args){
        Test p1 = new Test(2020,8,5);
        System.out.println(p1.toString());
    }
}
class Test{
    private int year;
    private int month;
    private int day;
    public Test(){

    }
    public Test(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    //重写此方法
    public String toString(){
        return this.year+"/"+this.month+"/"+this.day;
    }
}

equals方法原型

public boolean equals(Object obj){  
       return this == obj;  
   }

方法体中用==只能比较值是否相等,并不能比较两个对象是否相等,于是很有必要重写

所谓重写就是把原来的方法体中的代码(原本是用==判断),现在是用传入的数据进行比较

重写equals方法

一般三个if就能搞定

public class 重写equals方法 {
    public static void main(String[] args){
        Test01 p1 = new Test01("你好","20000","666");
        Test01 p2 = new Test01("你好","200008","666");
        System.out.println(p1.equals(p2));

    }
}
class Test01{
    private String name;
    private String id;
    private String phone;
    public Test01(){

    }
    public Test01(String name,String id,String phone){
        this.name = name;
        this.id = id;
        this.phone = phone;
    }
    //重写
    public boolean equals(Object obj){
        if(obj == null || !(obj instanceof Test01)){
            return false;
        }
        if(this == obj) return true;
        Test01 p2 = (Test01)obj;
        if(this.name.equals(p2.name)&&this.id.equals(p2.id)&&this.phone.equals(p2.phone))
            return true;
        return false;
    }

}
本站部分文章资源来源于互联网,仅供学习交流,如若要商用,请购买正版!
若不听劝告,网友造成出现一切后果,与本站本人无关
本站有些资源未经测试,请注意网络安全,本站不对下载的资源造成的后果负责
免责声明
作者:昼白
转载请注明来源:https://www.zhoubaiwl.club/1997.htm
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录