1

您会推荐哪种方式将 Java 对象转换String为,为什么?
例如,假设我们有:

StringBuilder sb = new StringBuilder();

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

sb.toString();

第二:

sb + "";
4

4 回答 4

7

第一个是首选,因为它更常用且更有效。

如果字符串不为空,您只会使用第二个(在这种情况下,您应该将其附加到 StringBuilder)

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

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

从技术上讲,它可以做到这一点。

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

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

于 2013-01-07T15:24:17.433 回答
5

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

如果您希望您的对象不为空,那么:

String s = someObject.toString();

节省了不必要的连接(编译器可能会或可能不会删除)。

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

String.valueOf(someObject);

在此示例中,如果someObject为 null,它将返回“null”并且不会引发异常。

于 2013-01-07T15:24:10.333 回答
1

正如@Peter Lawrey 提到的,第一个更常用于字符串生成器。但是,当转换为字符串时,最好这样做......

(String) myVariable;

而不是...

myVariable.toString();

这样做的原因是第二个可能会引发空指针异常。

于 2013-01-07T15:27:37.607 回答
1

还有第三种可能:

    Objects.toString(Object o, String nullDefault)

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

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

于 2013-01-07T15:35:39.997 回答