字符串连接与Null

osh*_*hai 13 java string

我有以下代码

System.out.println("" + null);
Run Code Online (Sandbox Code Playgroud)

而输出是null.
Java如何在字符串连接中发挥作用?

oxb*_*kes 24

因为Java将表达式转换"A String" + x为某些行"A String" + String.valueOf(x)

实际上我认为它可能使用StringBuilders,所以:

"A String " + x + " and another " + y
Run Code Online (Sandbox Code Playgroud)

解决方案效率更高

new StringBuilder("A String ")
    .append(x)
    .append(" and another ")
    .append(y).toString()
Run Code Online (Sandbox Code Playgroud)

这使用了append"字符串"构建器(对于每种类型)的方法,这些方法可以null正确处理

  • 刚检查了`append(Object)`的代码,它实际上委托给`String.valueOf()`.*虽然内部*方法.所以他们归结为相同的电话. (2认同)

Ale*_*yak 7

Java StringBuilder.append( Object obj )在幕后使用.

不难想象它的实施.

public StringBuilder append( Object obj )
{
   if ( obj == null )
   {
       append( "null" );
   }
   else
   {
       append( obj.toString( ) );
   }

   return this;
}
Run Code Online (Sandbox Code Playgroud)