class ewq{
public String toString()
{
return "ppppppppp";
}
public static void main(String[] args){
ewq t= new ewq();
System.out.print(t);
}
}
Sysout.out是一个PrintStream对象,print(println同理)方法有N个重载,其中一个是print(Objcet obj)。
public void print(char c) {
write(String.valueOf(c));
}
没toString方法是吧,别急继续往里走,看String.valueIOf(Object obj)方法。
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
看到toString了吧。
这就是System.out.print的实现过程。
注意,在传的参数不是String的时候,会调用String.value的各种重载把Long、Double等类型的对象转成String。在参数是String的时候,就不会这么麻烦,而是直接write了。
其实调的是String的静态方法valueOf