-3

の初期値/デフォルト値/初期化されていない値に関する限り...
...配列オブジェクトは初期化されていますか (クラスおよびローカルレベルで)?

SCJPノートでそれを読んでください:

配列がインスタンスまたはローカル変数として宣言されているかどうかに関係なく、配列要素にはデフォルト値が与えられます。

ただし、配列「オブジェクト」は、ローカルで宣言されている場合は初期化されません。

4

4 に答える 4

3

参照型であるクラス メンバーは、null の初期値を取得します。

参照型であるローカル変数は、ユニット化されていると見なされ、null などを明示的に割り当てる必要があります。そうしないと、コードはコンパイルされません。

この例をテストして、何が起こるか見てみましょう:

class Test {
    private Object[] member;

    public void foo() {
        member.toString(); // NullPointerException
        Object[] local;
        local.toString(); // won't compile: The local variable local may not have been initialized
    }
}

オブジェクトの配列は、それ自体が参照であるため、同じ規則に従います。

さて、それは配列自体のためです。array の実際の要素について話すとき、宣言する場所に関係なく、デフォルトでは null です。

class Test {
    private Object[] member = new Object[10];

    public void foo() {
        member[0].toString(); // NullPointerException
        Object[] local = new Object[10];
        local[0].toString(); // NullPointerException
    }
}
于 2012-06-02T12:51:56.787 に答える
2

初期化されていないオブジェクトは常にnull.

Object[] myArray;
//myArray == null

myArray = new Object[1];
//myArray[0] == null
于 2012-06-02T12:50:05.307 に答える
1

フィールドとして宣言された配列は、すべての非プリミティブ インスタンス変数と同様に null に初期化されます。ローカル変数として宣言された配列は、他のすべてのローカル変数と同様に初期化されていません。

新しい配列に初期化されると、両方の要素のそれぞれに null が含まれます。

于 2012-06-02T12:49:55.867 に答える
1

1.In JAVA local variable have to intitialized before using it.

2. String s[] = new String[2];
Here s[0] and s[1] both contains NULL value and initialize s[0] and s[1] as:
s[0] = new String();
s[1] = new String();
于 2012-06-02T13:09:46.530 に答える