A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天在类的继承学习中老师重写了toString方法,后来在调用过程中发现,直接打印对象,就会获得对象的信息,下例

当我们在测试类中打印Student对象会发现
```java
public class PersonTest {
        public static void main(String[] args) {
                System.out.println(new Student());
                Student st = new Student("wei", "man", 20, "china", "qinghua", "002");
                System.out.println(st);
        }
}
```
直接调用了`toString()`方法。

这使我产生了很大的疑问,
`System.out.println()`是怎么调用`toString`方法的?  
后来去网上查找了资料才知道。

Systeme类中的out字段是标准输出流,out是static PrintStream类型的,PrintStream类有println函数,其重载形式有参数是Object的

查找API文档后发现有这个方法:
```java
public void println(Object x)
    打印 Object,然后终止该行。此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,然后的行为如同先调用 print(String) 再调用 println() 一样。

```
  
打印对象是调用了`String.valueOf(x)`方法。查找文档
```api
public static String valueOf(Object obj)
    打印 Object,然后终止该行。此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,然后的行为如同先调用 print(String) 再调用 println() 一样。

    返回 Object 参数的字符串表示形式。
    参数:
        obj - 一个 Object
    返回:
        如果参数为null,则字符串"null";否则,返回 obj.toString() 的值。
```

评分

参与人数 2技术分 +6 黑马币 +5 收起 理由
华林 + 5 很给力!
合肥就业部 + 6 赞一个!

查看全部评分

19 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
6666
回复 使用道具 举报
         
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
很棒,加油
回复 使用道具 举报
回复 使用道具 举报
写的不错
回复 使用道具 举报
继续努力,写的很不错
回复 使用道具 举报
沙发
回复 使用道具 举报
沙发
回复 使用道具 举报
确实不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马