簡體   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