2014-02-19 85 views
3

當我執行下面的代碼時,輸​​出是「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); 
    } 
} 
+0

運行代碼;-) –

+0

+1:濫用字符串連接規則:)我不知道。 –

回答

12

您正試圖將值連接到null。這是由「字符串轉換」,當一個操作數是String發生,支配和被覆蓋the JLS, Section 5.1.11

現在僅爲參考值需要考慮:

  • 如果引用null,它將轉換爲字符串「null」(四個ASCII字符n,u,l,l)。
+0

對於那些在這裏尋找一種方法來在開始時擺脫這個'null',簡單的方法是用空字符串'''''而不是'null'來初始化你的變量。 – Pshemo

6

當你試圖通過+運營商Concat的null,它有效地包含"null"一個String取代。

這個一個很好的事情是,這樣一來可以避開NullPointerException,你會得到,否則,如果你明確要求在null變量.toString()方法。

0

Java將null視爲無,它是String的默認值。它出現在您的字符串輸出中,因爲您使用+=將「Hello World」添加到str

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

你基本上是告訴Java的:給我str變量String類型和分配值null;現在向變量str添加並分配(+=String「Hello World」;現在打印出str

相關問題