如果直接打印StringBuilder对象的内容或调用.toString()
方法,是否会产生影响?
特别是
StringBuilder sb = new StringBuilder("abc");
System.out.println(sb);
System.out.println(sb.toString());
一种风格比另一种更受欢迎吗?
有人可以评论为什么第一种方式有效吗?在Java中,System.out.println
隐式调用对象的.toString()
方法吗?
答案 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();
}