往者不可谏 来者犹可追

Object中的toString()方法

Object中的toString方法

equals是一个方法名---相等。
toString --- 把对象转换为字符串类型。实例方法,需要创建对象才能调用。

-- 我们研究了一下Object类当中的很多方法,其中有一个toString()方法,发现:
System.out.println(引用);
直接输出一个“引用”时,println()方法会自动调用“引用.toString()”,然后输出toString()执行结果

public class ExtendsTest03 {

    //ExtendsTest03默认继承Object
    //ExtendsTest03类当中有toString()方法
    //不过toString方法是一个实例方法,需要创建对象才能调用

    public static void main(String[] args) {

        ExtendsTest03 et = new ExtendsTest03();

        //toString()方法结束后,返回一个字符串,需要返回值
        String retValue = et.toString();
        //System.out.println(retValue);
        //System.out.println(et.toString()); 以上两行代码可以合并

        //如果直接调用“引用”呢? --和以上调用toString()结果相同,println()方法会自动调用toString()方法
        System.out.println(et);

        //运行结果:ExtendsTest03@14ae5a5
        //14ae5a5可以“等同”看做对象在堆内存中的内存地址
        //实际上是内存地址经过“哈希算法”得出的十六进制结果

    }
}

1、toString()方法的作用是什么?

将java对象转换成字符串的形式。

2、Object类中toString()方法的默认实现是什么?

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

toString():

方法名的意思是转换成String

含义:

调用一个java对象的toString()方法就可以将该java对象转换成字符串的形

注意:

大多数的Java类中toString()方法都是需要覆盖的。因为Object类中提供的toString()方法输出的是一个java对象的内存地址

toString()方法怎么覆盖?

格式可以自己定义,或者看项目要求。

3、那么toString()的默认方法够用吗?

public class OverrideTest04 {
    public static void main(String[] args) {
        Date t1 = new Date();
        //调用toString()方法,将对象转换为字符串形式
        //我们不满意这个输出结果,希望输出“x年x月x日“
        //System.out.println(t1.toString());  //输出Date@6a5fc7f7,这是重写Date的toString()之前的结果
        System.out.println(t1.toString());  //2001年5月18日,这是重写Date的toString()方法之后的结果

        //当输出一个引用时,println方法会自动调用引用的toString()方法
        Date t2 = new Date(2001,5,31);
        System.out.println(t2);
    }
}
class Date{
    private int year;
    private int month;
    private int day;

    public Date(){
        this(2001,5,18);
    }

    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }
    public String toString(){
       return year + "年" + month + "月" + day + "日";  //重写toString()方法
   }
}
posted @ 2022-09-27 10:32  你说你叫果郡王  阅读(148)  评论(1编辑  收藏  举报