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



当我执行以下代码时,输出是"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);
    }
}

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

现在只需要考虑参考值:

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

当您尝试通过运算符连接null+,它实际上被包含"null"String所取代。

这样做的好处是,这样您就可以避免NullPointerException,如果您在null变量上显式调用.toString()方法,否则您将获得

Java 将 null 视为无,它是字符串的默认值。它出现在您的字符串输出中,因为您使用 += 将"Hello World"添加到str

String str=null;
str+="Hello World";
System.out.println(str);

你基本上是在告诉Java:给我的str变量String的类型并赋予它值null;现在添加并分配(+=String"Hello World"给变量str;现在打印出str

我的两分钱:

    String str = null;
    str = str.concat("Hello World"); // Exception in thread "main" java.lang.NullPointerException

str += "Hello World";
System.out.println(str); // Hello World

相关内容

  • 没有找到相关文章