繁体   English   中英

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

[英]Why does a null value appear in string output?

当我执行以下代码时,输​​出为“nullHelloWorld”。 Java 如何处理空值?

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 节涵盖了这一点

现在只需要考虑参考值:

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

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

这样做的一个好处是,通过这种方式,您可以避免NullPointerException ,如果您在null变量上显式调用.toString()方法,否则您会得到这种.toString()

Java 将 null 视为空,它是 String 的默认值。 它出现在您的 String 输出中,因为您使用+=将“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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM