null是什么意思?

Vba*_*bey -2 java string null

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字符串的结果.有人能解释一下这个原因吗?

Jon*_*eet 9

首先,我怀疑这不是你的代码 - 或者它会抛出一个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.