の初期値/デフォルト値/初期化されていない値に関する限り...
...配列オブジェクトは初期化されていますか (クラスおよびローカルレベルで)?
SCJPノートでそれを読んでください:
配列がインスタンスまたはローカル変数として宣言されているかどうかに関係なく、配列要素にはデフォルト値が与えられます。
ただし、配列「オブジェクト」は、ローカルで宣言されている場合は初期化されません。
の初期値/デフォルト値/初期化されていない値に関する限り...
...配列オブジェクトは初期化されていますか (クラスおよびローカルレベルで)?
SCJPノートでそれを読んでください:
配列がインスタンスまたはローカル変数として宣言されているかどうかに関係なく、配列要素にはデフォルト値が与えられます。
ただし、配列「オブジェクト」は、ローカルで宣言されている場合は初期化されません。
参照型であるクラス メンバーは、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
}
}
初期化されていないオブジェクトは常にnull
.
Object[] myArray;
//myArray == null
myArray = new Object[1];
//myArray[0] == null
フィールドとして宣言された配列は、すべての非プリミティブ インスタンス変数と同様に null に初期化されます。ローカル変数として宣言された配列は、他のすべてのローカル変数と同様に初期化されていません。
新しい配列に初期化されると、両方の要素のそれぞれに null が含まれます。
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();