web-dev-qa-db-ja.com

int配列の要素が空かどうかを確認するにはどうすればよいですか?

例:

array[5]は値を保持するか、空です。

9
kylex

プリミティブ配列の要素を空にすることはできません。それらは常に何かに初期化されます(通常はint配列の場合は0ですが、配列の宣言方法によって異なります)。

そのように配列を宣言する場合(たとえば):

int [] myArray ;
myArray = new int[7] ;

その場合、すべての要素はデフォルトで0になります。

配列を宣言するための代替構文は次のとおりです。

int[] myArray = { 12, 7, 32, 15, 113, 0, 7 };

ここで、配列(この場合はサイズ7)の初期値は中括弧{}で示されます。

21
Bill the Lizard

Java配列には「空の」要素などはありません。配列の長さが6以上の場合、要素5が存在し、値があります。何も割り当てていない場合それ以外の場合は、オブジェクトの初期化されていないフィールドと同じように、値はゼロになります。

Objectの子孫の配列である場合は、要素がnullと等しいかどうかを確認できます。

8
Rob Kennedy

空とはどういう意味かを定義する必要があります。配列のデータ型に応じて、空のセマンティクスを決定できます。たとえば、intの配列がある場合は、0が空であると判断できます。または、配列が参照型の場合は、nullが空であると判断できます。次に、array [5] == nullまたはarray [5] == 0などを比較して確認します。

3

プリミティブ配列要素がnullになることはないため、プリミティブ配列(int、float、charなど)が「空」になることはありません(これにより、「null」を意味すると思います)。

デフォルトでは、int配列には通常、割り当て時に0が含まれます。しかし、私はこれに頼ることはありません(Cコードの記述に多くの時間を費やしたと思います)。

1つの方法は、「初期化されていない」ものとして扱いたい値を選択することです。 0、-1、または有効な値として使用しないその他の値である可能性があります。配列を割り当てた後、その値に配列を初期化します。

オブジェクト配列(String []およびObjectを拡張するオブジェクトの配列)、canにはnull要素があるため、Integer []配列を作成してnullに初期化できます。上記のような魔法の値を使用するよりも、そのアイデアの方が好きだと思います。

2
Terry Lacy