没有什么区别。使用较短且经常使用的那一种。
如果您实际上由于其他原因想要获取对象的字符串值,并且希望它为null友好,请执行以下操作:
String s = String.valueOf(obj);
编辑 :问题已扩展,所以我将扩展我的答案。
在这两种情况下,它们都将编译为以下内容:
System.out.println(new StringBuilder().append("obj: ").append(obj).toString());当您的内容
toString()是隐式的时,您将在第二个附录中看到。
如果您查看Java的源代码,您将看到
StringBuilder.append(Object)如下所示:
public StringBuilder append(Object obj) { return append(String.valueOf(obj));}其中,
String.valueOf如下所示:
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString();}现在,如果您
toString()自己,可以绕过null检查和堆栈框架,然后直接在
StringBuilder:
public StringBuilder append(String str) { super.append(str); return this;}所以…在两种情况下都会发生非常相似的事情。一个人只会做更多的工作。



