呵呵,这个问题貌似有点复杂哈。
首先System.out.println(s),println方法是PrintStream类的一个方法:- public void println(Object x) {
- String s = String.valueOf(x);
- synchronized (this) {
- print(s);
- newLine();
- }
- }
复制代码 这里调用了String类的valueOf方法对s进行处理- public static String valueOf(Object obj) {
- return (obj == null) ? "null" : obj.toString();
- }
复制代码 这里执行的显然是 obj.toString()
这里体现出了面向对象的多态了哈。
obj会指向子类型的引用,即StringBuilder中的toString方法:- public String toString() {
- // Create a copy, don't share the array
- return new String(value, 0, count);
- }
复制代码 看到返回的是什么了么?我就不再解释了哈 |