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

时间:2013-09-21 14:41:12

标签: java string tostring

这两个代码之间有什么区别:(对象是任意随机对象)

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

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

他们都返回相同的String

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

2 个答案:

答案 0 :(得分:4)

如果使用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+""提供更好的效果。

答案 1 :(得分:2)

第一个相当于:

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

而第二个只是一个普通的toString()电话。性能差异可能是微不足道的,但第二个几乎肯定会稍微快一点,因为它不使用不必要的StringBuilder。一般来说,更喜欢第二种方法。