这是关于Java中字符串初始化的一些先前问题的后续问题.
经过Java的一些小测试,我面临以下问题:
为什么我可以执行此语句
String concatenated = str2 + " a_literal_string";
Run Code Online (Sandbox Code Playgroud)
当str2一个String初始化对象null(String str2 = null;),但我不能调用方法toString()上str2?那么Java如何进行空String对象和字符串文字的连接?
顺便说一下,我还尝试将一个初始化为null的字符串"a_literal_string"和字符串文字连接起来,我"null a_literal_string"在控制台中也有同样的东西.那么无论哪种null都给出同样的东西?
PS:System.out.println(concatenated);给空a_literal_string作为控制台输出.
这一行:
String concatenated = str2 + " a_literal_string";
Run Code Online (Sandbox Code Playgroud)
编译成类似的东西
String concatenated = new StringBuilder().append(str2)
.append(" a_literal_string")
.toString();
Run Code Online (Sandbox Code Playgroud)
这给出"null a_literal_string"(而不是NullPointerException)因为StringBuilder.append使用了String.valueOf,并String.valueOf(null)返回字符串"null".
我还尝试连接一个初始化为null的字符串和字符串文字"a_literal_string",我也有同样的事情
这与上述原因相同.String.valueOf(anyObject)这里anyObject是null会给予回复"null".
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |