2011-12-12 44 views
1

該代碼正確打印出「x [2] [2]爲false」,我的問題是明白爲什麼會發生這種情況。 (這是正確的,我只需要有人向我「電腦說話」這個邏輯 - 我在4小時內完成我的決賽,並且不會再打擾任何人:))
非常感謝您的協助!布爾數組問題

public static void main(String[] args) { 
    boolean[][] x = new boolean[3][]; 
    x[0] = new boolean[1];x[1] = new boolean[2]; 
    x[2] = new boolean[3]; 

    System.out.println("x[2][2] is " + x[2][2]); 
} 
+0

@Крысa101101011 –

+0

計算機說'不' – DaveRlz

+0

未來,不要等到最後幾個小時才發現你不知道語言的關鍵。你會更高興,相信我。 – Paul

回答

1

當你聲明一個布爾數組時,它會自動默認將它所有的值都設爲'false'。

2

當你創建一個new boolean[n]所有的布爾值默認爲false當您創建一個數組(這也是boolean默認)

3

,每個條目獲得一個默認值。對於boolean,默認值爲false。 (對於數字的原語,所述默認值是零。對於引用類型,默認值是null。)

因此,當你創建頂層陣列,boolean[][] x = new boolean[3][];x是布爾陣列的3元素數組,與每個元素設置爲默認值null。 (原始類型的單個數組是一個引用類型。)程序然後用一個新的布爾基元數組初始化每個元素x,每個元素都填充了false元素。請注意,陣列具有不同的長度;這在Java中不是問題。碰巧,x[2][2]實際上存在(不像,比如說,x[1][2]),所以println的呼叫成功。

+0

這是Java語言規範中的[缺省值部分](http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.5)。 – Paul

+0

^^這是最大的幫助 - 我真的很感激你的(建設性的)輸入! –

+0

@FlorianFirlus,歡迎來到Stack Overflow - 我很高興它對你有幫助。不要忘記投票正確的答案(和任何你發現有用的答案),然後點擊最好解決問題的答案旁邊的複選標記。 – Paul

0

在布爾基元的情況下,數組元素被初始化爲默認值false。因此new boolean[3]將導致{false, false, false};

0

這是因爲所有基元類型的變量都有默認值。你不能使用沒有初始化的常規變量,但是當你創建數組時,每個元素都會自動初始化。 int,long,short爲0,float和double爲0.0,布爾值爲false。

您不初始化您的2維數組的元素。所以它的所有元素默認爲false。

+0

你說這個「常規變量」是什麼? – Paul

0

無論您分配多少和多少,Java中默認值爲boolean s是false