这两个
代码有什么区别:(对象是任何随机对象)
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
.通常,首选第二种方法。