null是什么意思?

时间:2013-07-19 15:42:47

标签: java string null

String s="";
while ((strLine = br.readLine()) != null)   {
    s=s.concat(strLine);

当我使用这段代码时,我从文件中得到了我期望的字符串.. 但是,如果我使用

String s = null;

我得到的是null作为s字符串的结果。有人能解释一下这个的原因吗?

1 个答案:

答案 0 :(得分:9)

首先,我怀疑你的代码 - 或者它会抛出NullPointerException。我怀疑你实际得到了:

s = s + strLine;

之后,它非常简单 - 将任何字符串与null字符串引用相连接将为您提供null

String x = null;
String y = x + "a";
System.out.println(y); // nulla

来自section 15.18.1 of the JLS(字符串连接):

  

如果只有一个操作数表达式是String类型,则在另一个操作数上执行字符串转换(第5.1.11节)以在运行时生成字符串。

然后从section 5.1.11

  

如果引用为null,则将其转换为字符串“null”(四个ASCII字符n,u,l,l)。

请注意,您的代码目前效率极低 - 您应该使用StringBuilder