在 Java 中所有的类都有一个共同的父类 Object(默认继承, 不用加 extends 关键字),toString 方法就是 Object 类的一个方法, 用来返回该对象的字符串表示形式 (个人总结: 需要把该类转换成 String 类型的时候就会调用该方法)
父类 Object 中的 toString() 方法
可以看到该方法返回的是 "类名 @hashCode 值" 形式的字符串
但这并不是我们所想要的结果, 我们希望这个方法返回的是该类的所有属性拼接的字符串, Object 的 toString 方法已经不够用了, 因此, 我们需要重写该方法
既然已经重写好了该方法, 那该方法是什么时候被调用的呢?
我们经常使用 System.out.println() 方法来打印一个基本类型的变量或引用变量, 我们根据源代码来查看是如何运行的:
System.out.println() 通过标准输出流对象调用 println() 方法
该方法是用于打印基本类型变量或引用变量, 我们在看看 prinln() 方法是如何实现的?
该方法被重载了, 基本类型的参数直接打印出该值, 我们主要关注引用类型参数是如何实现
String.valueOf() 方法用于返回 Object 参数的字符串表示形式, 将该值用 String 类型的变量 s 接收, 并打印出来, 我们在看看 valueOf() 方法是怎么实现的
若该引用变量不是指向空引用, 则调用该引用变量所指向的对象的 toString 方法
由此, 我们可以判断, 当 System.out.println() 中的参数类型是基本类型参数时, 直接打印, 若是引用类型时, 调用该引用类型所指向的对象的 toString 方法, 如果该子类对象不重写 toString 方法, 则打印的是 "类名 @hashCode 值" 形式的字符串, 通常建议重写 toString 方法
来源: http://www.bubuko.com/infodetail-2946006.html