在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方法。