Javaでのブール配列の初期化


102

私はこのコードを持っています

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

誰かが私がここで間違っていることを正確に教えてもらえますか?すべての配列要素をブール値falseに初期化する必要があるだけです。ありがとうございました

回答:


285

すべての配列要素をブール値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の配列の詳細については、この基本的なOracleチュートリアルを参照してください


3
2番目のコードは、すべての真の値に初期化(設定)したい場合に役立ちます。正解です。
独裁者、2011

3
むしろ、変数名を逆にして、デフォルト値をfalse値で使用します。
BalusC、2015

私は賛成で実際に午前Boolean[] array:それはあなたが各要素のための3つの状態を持つことができますようtruefalseそしてnullあなたが「処理していない」であることが何かを注意したい場合に便利です。
Abhishek Divekar

20

配列を割り当てると、配列はfalseに初期化されます。

Javaのすべての配列は、型のデフォルト値に初期化されます。つまり、intの配列は0に初期化され、ブール値の配列はfalseに初期化され、参照型の配列はnullに初期化されます。


12
彼はBooleanではなくを使用しているbooleanため、デフォルトでになりますnull
BalusC 2010年

1
正しい。見なかった。Arrays.fillがうまくいくはずです。
ヨルゲンFogh

9

Javaの配列は0からインデックスを開始します。この例では、配列の外側にある要素を1つ参照しています。

おそらく、freq [Global.iParameter [2] -1] = falseのようになります。

すべてを初期化するには、配列をループする必要があります。この行では、最後の要素のみが初期化されます。

実際、Javaのブール値のデフォルトはfalseであるため、初期化する必要はまったくないかもしれません。

宜しくお願いします


2
彼はBooleanではなくを使用しているbooleanため、デフォルトでになりますnull
BalusC 2010年

5

falseデフォルトで初期化されます。Javaでは、配列はヒープ上に作成され、配列のすべての要素には、その型に応じてデフォルト値が与えられます。以下のためにbooleanデータのデフォルト値があるタイプfalse


3
彼はBooleanではなくを使用しているbooleanため、デフォルトでになりますnull
BalusC 2010年

私はブール値を使用する
つもりでした

2

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

Global.iParameter [2]:

const値である必要があります


1
本当じゃない。変数でもかまいません。問題は、Global.iParameter [2]を使用して配列にアクセスしていることです。しかし、インデックスは0からGlobal.iParameter [2] -1のみになるまでです。
Karussell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.