object+ " " 和 object.toString() 之间的区别


这两个

代码有什么区别:(对象是任何随机对象)

Object object = anything;
String str = object+"";

Object object = anything;
String str = object.toString();

它们都返回相同的String

它们的表现如何?哪一个更好?

如果使用javap -c反编译这些示例,您将在第一种情况下看到

  • 将创建StringBuilder
  • 它会append(Object obj)
  • 内部将调用append(String.valueOf(obj));
  • 首先将检查null参考。

所以结果的主要区别 null

Object o = null;
System.out.println(o + ""); // result "null"
System.out.println(o.toString()); // throws NPE

如果无法null数据,或者想要抛出 NPE,则应使用 toString() 以获得更好的性能。

如果你的数据可以null,在这种情况下,结果字符串也应该"null" String.valueOf(object),这将为你提供比object+""更好的性能。

第一个等效于:

Object object = anything;
String str = new StringBuilder().append(object).toString();

而第二个只是一个普通的toString()电话。性能差异可能可以忽略不计,但第二个几乎肯定会略快,因为它不使用不必要的StringBuilder .通常,首选第二种方法。

最新更新