6

私が構築した場合:

Object[][] guy = new Object[5][4];

アレイ内のスポットにはデフォルト値がありますか? それらはヌルですか?

配列内のすべてのスポットにデフォルト値を割り当てる方法はありますか?

4

6 に答える 6

14

はい、新しい配列のフィールドはnullJava で初期化されます。

このメソッドArrays.fill()を使用して、配列内のすべてのフィールドに特定の値を入力できます。

何を入れるべきかを静的に知っている短い長さの配列がある場合は、配列初期化子を使用できます。

Object[][] guy = { { obj1, obj2, null, obj3 }, { ... }, ... };

そのためには、すべてのフィールド (この場合は 20) を含む完全な配列を入力する必要があるため、すべての場所に同じ値を入れたい場合fill()は、おそらくより便利です。

ところで、プリミティブ型の配列。0 のさまざまなバリアントとfalsefor ブール配列で初期化されます (初期化子を使用しない限り)。配列の初期化の規則は、フィールドの初期化の規則と同じであり、Java 言語仕様でここで見つけることができます。

于 2013-02-17T11:12:13.800 に答える
9

既存の回答はすべて正しいですが、特定の例に追加するビットが1つあります。参照配列は既定で null に設定されていますが、多次元配列では最初の次元が暗黙的に作成されます。

たとえば、あなたの場合、最初の次元はnullにはなりませんが、実際には別の配列を指します:

Object[][] guy = new Object[5][4];
System.out.println(guy[0]);
--> Output will be [Ljava.lang.Object;@5e743399
于 2013-02-17T11:19:25.823 に答える
1

Java では、オブジェクトの初期化でデフォルト値「null」が想定されます。

于 2013-02-17T11:13:14.867 に答える
1

プリミティブ型はデフォルト値で初期化され、参照型は初期化されません (したがって 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

于 2013-02-17T11:16:42.883 に答える
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'}};
于 2013-02-17T11:14:58.123 に答える