您建议使用哪种方法将Java对象转换为String
?为什么?
例如,假设我们有:
StringBuilder sb = new StringBuilder();
我们可以通过两种方式将其转换为String
。第一:
sb.toString();
第二
sb + "";
答案 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
相同)