StringBuilder应该在打印之前转换为String吗?

时间:2014-05-20 22:09:14

标签: java stringbuilder

如果直接打印StringBuilder对象的内容或调用.toString()方法,是否会产生影响?

特别是

StringBuilder sb = new StringBuilder("abc");
System.out.println(sb);
System.out.println(sb.toString());

一种风格比另一种更受欢迎吗?

有人可以评论为什么第一种方式有效吗?在Java中,System.out.println隐式调用对象的.toString()方法吗?

1 个答案:

答案 0 :(得分:5)

正如您所猜测的那样,PrintStream#println(Object)确实会自动调用对象的toString()方法:

public void println(Object x) {
    String s = String.valueOf(x);
    synchronized (this) {
        print(s);
        newLine();
    }
}

String.valueOf()的位置:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}