黑马程序员技术交流社区
标题:
直接打印对象调用toString方法呢?
[打印本页]
作者:
fxtahe
时间:
2018-5-6 20:10
标题:
直接打印对象调用toString方法呢?
今天在类的继承学习中老师重写了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() 的值。
```
作者:
鱼帅
时间:
2018-5-7 00:35
没看懂要说什么。
作者:
奥斯托洛夫斯基
时间:
2018-8-9 17:32
作者:
O-limin
时间:
2018-8-9 17:35
作者:
项老师
时间:
2018-8-9 17:37
作者:
TomGe
时间:
2018-8-9 17:39
作者:
天亮1
时间:
2018-8-9 17:41
作者:
hguilin
时间:
2018-8-9 17:55
6666
作者:
shengweiyun
时间:
2018-8-9 18:12
作者:
黑马啸西风
时间:
2018-8-9 18:41
作者:
wishyouwerehere
时间:
2018-8-9 18:50
作者:
合肥黑马9期
时间:
2018-8-9 18:56
作者:
鸟语花香
时间:
2018-8-10 09:59
作者:
ZC971227
时间:
2018-8-14 11:20
很棒,加油
作者:
曹瑞银
时间:
2018-8-14 11:21
作者:
ms1249615386
时间:
2018-8-14 11:21
写的不错
作者:
pfjava6
时间:
2018-8-14 11:23
继续努力,写的很不错
作者:
595156223
时间:
2018-8-14 11:24
沙发
作者:
595156223
时间:
2018-8-14 11:24
沙发
作者:
日常空大
时间:
2018-8-14 11:29
确实不错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2