String s="";
while ((strLine = br.readLine()) != null) {
s=s.concat(strLine);
Run Code Online (Sandbox Code Playgroud)
当我使用这段代码时,我从文件中得到了我期望的字符串..但是如果我使用的话
String s = null;
Run Code Online (Sandbox Code Playgroud)
我得到的是nulls字符串的结果.有人能解释一下这个原因吗?
首先,我怀疑这不是你的代码 - 或者它会抛出一个NullPointerException.我怀疑你确实得到了:
s = s + strLine;
Run Code Online (Sandbox Code Playgroud)
之后,它非常简单 - 使用String引用连接任何字符串null将为您提供null:
String x = null;
String y = x + "a";
System.out.println(y); // nulla
Run Code Online (Sandbox Code Playgroud)
从JLS的第15.18.1节(字符串连接):
如果只有一个操作数表达式是String类型,则对另一个操作数执行字符串转换(第5.1.11节)以在运行时生成字符串.
然后从5.1.11节:
如果引用为null,则将其转换为字符串"null"(四个ASCII字符n,u,l,l).
请注意,您的代码目前效率极低 - 您应该使用a StringBuilder.