2010-03-02 143 views
74

一個布爾值數組我有這樣的代碼初始化在Java

public static Boolean freq[] = new Boolean[Global.iParameter[2]]; 
freq[Global.iParameter[2]] = false; 

可能有人告訴我,我做什麼錯在這裏和如何將我糾正嗎?我只需要將所有數組元素初始化爲布爾值false。 謝謝

回答

221

我只需要將所有數組元素初始化爲布爾值false。

要麼使用boolean[]代替所有的值默認爲false

boolean[] array = new boolean[size]; 

或者使用Arrays#fill()Boolean.FALSE填滿整個數組:

Boolean[] array = new Boolean[size]; 
Arrays.fill(array, Boolean.FALSE); 

還要注意的是,數組索引是基於零的。您在那裏的freq[Global.iParameter[2]] = false;行會導致ArrayIndexOutOfBoundsException。要了解有關Java中的數組的更多信息,請參閱this basic Oracle tutorial

+0

這非常有益 – 2010-03-02 16:46:07

+3

第二段代碼對於我們想將它初始化(設置)爲所有真值的情況是有益的。很好的答案! – despot 2011-09-06 13:11:36

+1

我寧願反轉變量名稱,並使用默認的初始值和假值。 – BalusC 2015-07-03 18:27:15

14

當您分配數組時,它將被初始化爲false。

Java中的所有數組都被初始化爲該類型的默認值。這意味着整數的數組被初始化爲0,布爾的數組被初始化爲false,並且引用類型的數組被初始化爲空。

+9

他使用'布爾',而不是'布爾',所以它會默認爲'null'。 – BalusC 2010-03-02 16:50:19

+0

正確。我沒有看到。 Arrays.fill應該做的伎倆。 – 2010-03-02 17:15:14

1

public static Boolean freq [] = new Boolean [Global.iParameter [2]];

Global.iParameter [2]:

應該是const值

+1

這是不正確的。也可能是變數。問題是您正在使用Global.iParameter [2]來訪問數組。但指數從0直到Global.iParameter [2] -1! – Karussell 2010-03-02 16:47:17

4

他們將被默認初始化爲false。在Java中,數組是在堆上創建的,並且根據數組的類型給出數組的每個元素的默認值。對於boolean數據類型,默認值爲false

+3

他使用'布爾',而不是'布爾',所以它將默認爲'null'。 – BalusC 2010-03-02 16:51:14

+0

oops..didnt看到了。感謝BalusC :) – codaddict 2010-03-02 16:55:39

+0

我的意思是使用布爾值,我的壞...很抱歉誤導 – 2010-03-02 16:56:31

8

Java中的數組開始索引爲0.因此,在您的示例中,您指的是數組之外的元素。它應該可能類似於freq [Global.iParameter [2] -1] = false;

您需要遍歷數組以初始化所有數據,該行只會初始化最後一個元素。

實際上,我非常確定在Java中布爾值的默認值是false,因此您可能不需要初始化。

最好的問候

+2

他使用'布爾',而不是'布爾',所以它將默認爲'null'。 – BalusC 2010-03-02 16:45:59