在最近的一個項目中追查了一些NullPointerException
後,我終於找到他們來自哪裏,這讓我感到驚訝。儘管我現在可以準確地描述它們來自哪裏以及如何防止它們,但我仍然對這種行爲如何在沒有來自編譯器或至少IDE的警告的情況下允許發生混淆。爲什麼我們可以一次實例化多個變量?
我瀏覽了一下Stack並做了一些相當廣泛的使用Google,但是找不到任何關於此的文章。爲了切入這個追逐,一些代碼證明了這種奇怪的行爲;
public class Test {
String what, why, where = "who knows?";
public static void main(String[] args) {
System.out.println("The 'what' String = " +new Test().what);
}
}
輸出;
The 'what' String = null
這說明正確的輸出,如果你申報並單獨實例每個字符串,而是鏈接在一起這樣使它們被實例化null
。那麼,問題是爲什麼?如果這是標準行爲,那麼爲什麼編譯器甚至允許我們以這種方式實例化String
對象?
'String what,why,where =「誰知道?」 ;' 這是similer到 'String什麼; 爲什麼; String where =「誰知道?」;' –
警告你什麼?你聲明瞭三個變量並初始化一個變量。並不罕見。 –