转换为String的首选方式

Ada*_*zyk 1 java string

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

StringBuilder sb = new StringBuilder();

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

sb.toString();
Run Code Online (Sandbox Code Playgroud)

第二:

sb + "";
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 7

第一种是优选的,因为它更常用且更有效.

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

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

new StringBuilder().append(sb.toString()).append("").toString();
Run Code Online (Sandbox Code Playgroud)

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

new StringBuilder().append(String.valueOf(sb)).append("").toString();
Run Code Online (Sandbox Code Playgroud)

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


ass*_*ias 5

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

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

String s = someObject.toString();
Run Code Online (Sandbox Code Playgroud)

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

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

String.valueOf(someObject);
Run Code Online (Sandbox Code Playgroud)

在此示例中,如果someObject为null,则返回"null"并且不会引发异常.

  • 我更喜欢尽早发出一个异常信号来解决问题,并允许我修复bug,因为它有null而不是实际的想要的结果. (3认同)