私が構築した場合:
Object[][] guy = new Object[5][4];
アレイ内のスポットにはデフォルト値がありますか? それらはヌルですか?
配列内のすべてのスポットにデフォルト値を割り当てる方法はありますか?
はい、新しい配列のフィールドはnull
Java で初期化されます。
このメソッドArrays.fill()
を使用して、配列内のすべてのフィールドに特定の値を入力できます。
何を入れるべきかを静的に知っている短い長さの配列がある場合は、配列初期化子を使用できます。
Object[][] guy = { { obj1, obj2, null, obj3 }, { ... }, ... };
そのためには、すべてのフィールド (この場合は 20) を含む完全な配列を入力する必要があるため、すべての場所に同じ値を入れたい場合fill()
は、おそらくより便利です。
ところで、プリミティブ型の配列。0 のさまざまなバリアントとfalse
for ブール配列で初期化されます (初期化子を使用しない限り)。配列の初期化の規則は、フィールドの初期化の規則と同じであり、Java 言語仕様でここで見つけることができます。
既存の回答はすべて正しいですが、特定の例に追加するビットが1つあります。参照配列は既定で null に設定されていますが、多次元配列では最初の次元が暗黙的に作成されます。
たとえば、あなたの場合、最初の次元はnullにはなりませんが、実際には別の配列を指します:
Object[][] guy = new Object[5][4];
System.out.println(guy[0]);
--> Output will be [Ljava.lang.Object;@5e743399
Java では、オブジェクトの初期化でデフォルト値「null」が想定されます。
プリミティブ型はデフォルト値で初期化され、参照型は初期化されません (したがって null になります)
コード スニペットを実行して何が起こるかを確認してください public class ArraysSample {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Object[][] objAr = new Object[4][5];
for (Object[] objects : objAr) {
for (Object object : objects) {
System.out.print(object + "\t");
}
System.out.println();
}
int[][] primitievArray = new int[4][5];
for (int[] is : primitievArray) {
for (int i : is) {
System.out.print(i + "\t");
}
System.out.println();
}
}
}
null null null null null null null null null null null null null null
null null null
null
null
0 0 0 0 0 0 0 0
0 0 0
0 0
0 0 0
はい、たとえば、デフォルトの割り当てを使用できます。
それ以外の:
char[][] c = new char[5][4];
あなたはできる:
char[][] c = {{'a','b','c','x','B'}, {'A','Z','w','Z','S'},
{'A','Z','w','Z','S'},{'A','Z','w','Z','S'}};