转换为String的首选方式

时间:2013-01-07 15:22:22

标签: java string

您建议使用哪种方法将Java对象转换为String?为什么? 例如,假设我们有:

StringBuilder sb = new StringBuilder();

我们可以通过两种方式将其转换为String。第一:

sb.toString();

第二

sb + "";

4 个答案:

答案 0 :(得分:7)

首先是首选,因为它更常用,效率更高。

如果String不为空,你只会使用第二个(在这种情况下你应该将它附加到StringBuilder)

第二个例子更昂贵,因为它与

大致相同
new StringBuilder().append(sb.toString()).append("").toString();

从技术上讲,它就是这样做的。

new StringBuilder().append(String.valueOf(sb)).append("").toString();

区别在于String.valueOf(null)=> “null”而不是NPE。

答案 1 :(得分:5)

someObject.toString()someObject + ""之间的主要区别在于,如果someObject为null:前者将抛出NullPointerException,而后者则不会抛出(它将返回“null”)。

如果您希望您的对象为非null,则:

String s = someObject.toString();

保存不必要的连接(编译器可能会或可能不会删除)。

但是,如果对象可以为null并且它是可接受的值,我宁愿选择:

String.valueOf(someObject);

在此示例中,如果someObject为null,则返回“null”并且不会抛出异常。

答案 2 :(得分:1)

第一个更常用于String Builder,正如@Peter Lawrey所提到的那样。但是当转换到String时,最好做...

(String) myVariable;

而不是......

myVariable.toString();

原因是第二个可能抛出空指针异常。

答案 3 :(得分:1)

还有第三种可能性:

    Objects.toString(Object o, String nullDefault)

如果第一个参数是null,则返回第二个参数 否则返回o.toString()

(还有Objects.toString(Object o),其返回与String.valueOf相同)