为什么在字符串输出中出现空值?

Man*_*pal 4 java string null string-concatenation

当我执行以下代码时,输​​出为"nullHelloWorld".Java如何处理null?

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String str=null;
        str+="Hello World";
        System.out.println(str);
    }
}
Run Code Online (Sandbox Code Playgroud)

rge*_*man 12

您正在尝试将值连接到null.这由"字符串转换"控制,当一个操作数是a时发生String,并且由JLS第5.1.11节涵盖:

现在只需要考虑参考值:

  • 如果引用为null,则将其转换为字符串"null"(四个ASCII字符n,u,l,l).


War*_*ord 7

当您尝试null通过+运算符连接时,它实际上被String包含替换"null".

关于这一点的一个好处是,NullPointerException如果你.toString()在null变量上显式调用方法,这样就可以避免你获得的.