是的,打印的就是对象的toString方法。
因为System.out.println()的这个方法源码中调用了String.valueOf(Objec o),
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
而String.valueOf(x)的源码就是去调用该对象的toString()方法,源码如下:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
从这段源码中就可以看出,为什么我们调用System.out.println(null),传递一个null的时候,系统可以直接打印出“null”字符串。
遇到问多看源码和API文档是个非常好的习惯,我自己也在坚持,感觉受益匪浅。 |