我觉得我的表述没有问题
你不重写toString
,那它不输出你想要的结果,不代表它不会给你转换成字符串;你调用了println
,它去调用valueOf方法,在程序员使用System.out.println()
语句的时候,程序员的主观感觉是println()
方法给你转换的,至于方法的实现过程调用了谁,在调用者看来没那么重要
按照你的想法,转换字符串是valueOf()
转换的,那valueOf还调用了toString()
呢,那也应该是toString转换的才对。
而toString方法在Object
里就有,null会被valueOf()
转化为字符串"null"
,基本数据类型有专门的valueOf()
方法来转换,所以所有类型的数据都可以被println()
转换成字符串输出