·
#include __FILE__

虽然我不知道我的想法对不对,但是“能够将任何类型的数据转换成字符串输出”也太绝对了,我自定义一个类型不实现toString()那它也不能打印出我想要的结果啊,无非是调用了String.valueOf()怎么能叫它转换的

Replies
5

我觉得我的表述没有问题

你不重写toString,那它不输出你想要的结果,不代表它不会给你转换成字符串;你调用了println,它去调用valueOf方法,在程序员使用System.out.println()语句的时候,程序员的主观感觉是println()方法给你转换的,至于方法的实现过程调用了谁,在调用者看来没那么重要

按照你的想法,转换字符串是valueOf()转换的,那valueOf还调用了toString()呢,那也应该是toString转换的才对。

而toString方法在Object里就有,null会被valueOf()转化为字符串"null",基本数据类型有专门的valueOf()方法来转换,所以所有类型的数据都可以被println()转换成字符串输出