这行:
String concatenated = str2 + " a_literal_string";
被编译成类似
String concatenated = new StringBuilder().append(str2)
.append(" a_literal_string")
.toString();
这给出"null a_literal_string"
(而不是给出NullPointerException
),因为StringBuilder.append
是使用实现的String.valueOf
,并String.valueOf(null)
返回string "null"
。
我还尝试将一个初始化为null的Integer和字符串文字“ a_literal_string”
连接起来,我得到了同样的东西
这是由于与上述相同的原因。String.valueOf(anyObject)
这里anyObject
是null会给予回复”null”。