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