在Java中所有的类都有一个共同的父类Object(默认继承,不用加extends关键字),toString方法就是Object类的一个方法,用来返回该对象的字符串表示形式(个人总结:需要把该类转换成String类型的时候就会调用该方法)

  父类Object中的toString()方法

  

java tostring 参数 java中.tostring_字符串

  可以看到该方法返回的是"类名@hashCode值"形式的字符串

  但这并不是我们所想要的结果,我们希望这个方法返回的是该类的所有属性拼接的字符串,Object的toString方法已经不够用了,因此,我们需要重写该方法

  

java tostring 参数 java中.tostring_引用变量_02

  既然已经重写好了该方法,那该方法是什么时候被调用的呢?

  我们经常使用System.out.println()方法来打印一个基本类型的变量或引用变量,我们根据源代码来查看是如何运行的:

  System.out.println()通过标准输出流对象调用println()方法

  

java tostring 参数 java中.tostring_引用变量_03

  该方法是用于打印基本类型变量或引用变量,我们再看看prinln()方法是如何实现的?

  

java tostring 参数 java中.tostring_java tostring 参数_04

  该方法被重载了,基本类型的参数直接打印出该值,我们主要关注引用类型参数是如何实现

  

java tostring 参数 java中.tostring_字符串_05

  String.valueOf()方法用于返回Object参数的字符串表示形式,将该值用String类型的变量s接收,并打印出来,我们在看看valueOf()方法是怎么实现的

  

java tostring 参数 java中.tostring_java tostring 参数_06

  若该引用变量不是指向空引用,则调用该引用变量所指向的对象的toString方法

  由此,我们可以判断,当System.out.println()中的参数类型是基本类型参数时,直接打印,若是引用类型时,调用该引用类型所指向的对象的toString方法,如果该子类对象不重写toString方法,则打印的是"类名@hashCode值"形式的字符串,通常建议重写toString方法。