2013-08-04 30 views
2

此程序串聯到空可變產生意想不到的結果,在Java中

public class OddBehavior { 
    public static void main(String[] args){ 
     String[] words = new String[3]; 
     words[0] += "ify"; 
     System.out.println(words[0]); 
    } 
} 

具有下面的輸出:

Image

我初始化的3 String秒的陣列,這是我認爲將是null 。但通過添加字符串「國際預科」到words[0]年底,words[0]得到它已經包含字符串"null"價值"nullify",即(在String,而不是價值null!)

+0

@ChrisMiddleton閱讀此[回覆](http://stackoverflow.com/questions/4260723/concatenating-null-strings-in-java/4260803#4260803)。 –

+0

沒有一個好的答案。如果Java神已經聲明「一個null值的字符串應該打印爲空字符串」,那麼現在有人正在向SO發帖,詢問打印「null」是不是更好。這只是一個決定,不會比其他決定更好或更差。 –

回答

3

代碼words[0] += "ify"相當於words[0] = words[0] + "ify"。當字符串與+運算符連接時,Java在內部使用StringBuilder將它們放在一起。當將null附加到StringBuilder時,它將使用文字"null"。這就是發生這種事的原因。

相關問題