[英]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.