在Java 中为什么要重写toString()方法?

1,284 阅读1分钟

首先toString()在Java API的意思是:返回该对象的字符串表示. toString()是Object类的方法,只要继承了Object类都可以重写toString()方法, 打印一个对象默认是调用对象的toString()方法。 我们来看看Object的toString()方法底层源码:

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

得到的是 类名@+地址名(哈希码)所以我们一般都会重写toString()方法,打印出我们想要看的东西。
上代码:

public class InFo {
private String name;
private Integer age;
public InFo(){    
/**不写无参构造会默认这个类有无参构造。只写有参构造,不写无参构造那么就没有无参构造了。调用时只会调用含参构造,以后可能会造成很多麻烦,一般都写上无参构造。  */                             

   System.out.println("InFo无参构造");
}
public InFo(String name,Integer age){
    super();   //找Object的构造方法
    this.name = name;
    this.age = age;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}

@Override
public String toString() {
    return "InFo{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
}   

public void setAge(int age) {
    this.age = age;
}

public static void main(String[] args) {
    /**
     * java 字典  JDK  api
     * toString() 返回该对象的字符串表示
     *
     *
     * */
    InFo info = new InFo("李四",20);
    InFo info1 = new InFo();
    System.out.println(info); //
    System.out.println(info.getName()+"----"+info.getAge());
    System.out.println(info.toString());
    /**
    info 与info.toString打印结果是一样的。
    打印一个对象默认是调用对象的toString()方法。
    
    
    **/

}

}

代码运行结果: