どうして
int alone;
System.out.println(alone);
エラーが発生しますが、
int[] arr = new int[1];
System.out.println(arr[0]);
0 ですか? 空の配列を初期化すると、その内容は自動的に 0 (または null など) に初期化されますか?
どうして
int alone;
System.out.println(alone);
エラーが発生しますが、
int[] arr = new int[1];
System.out.println(arr[0]);
0 ですか? 空の配列を初期化すると、その内容は自動的に 0 (または null など) に初期化されますか?
言語標準から
それ以外の場合、指定された長さの 1 次元配列が作成され、配列の各コンポーネントがデフォルト値に初期化されます (§ 4.12.5 )。
デフォルト値は次のとおりです。
タイプ byte の場合、デフォルト値はゼロ、つまり (byte)0 の値です。
short 型の場合、デフォルト値はゼロ、つまり (short)0 の値です。
int 型の場合、デフォルト値はゼロ、つまり 0 です。
long 型の場合、デフォルト値はゼロ、つまり 0L です。
float 型の場合、デフォルト値は正のゼロ、つまり 0.0f です。
double 型の場合、既定値は正のゼロ、つまり 0.0d です。
char 型の場合、デフォルト値はヌル文字、つまり '\u0000' です。
ブール型の場合、デフォルト値は false です。
すべての参照型 (§ 4.3 ) について、デフォルト値は null です。
はい、プリミティブ型 (boolean と char を除く) の場合、デフォルトで ZERO になります。オブジェクト タイプの場合、デフォルトは になりますnull
。
このJava チュートリアルが役立つ場合があります。
注:woot4Mooが答えたように、これはインスタンス変数のみです。ローカル変数の場合、デフォルトにはなりません。
ここには、同様の問題が 2 つあります。最初に、すべての変数タイプにはデフォルト値があり、タイプによって異なることに注意してください。これらのデフォルトが使用される場面が少なくとも 2 つあります。1) メンバー変数の宣言と、2)new
演算子による配列の初期化です。
ローカル配列変数を で初期化せずに単に宣言すると、単純な変数new
を宣言したときと同じエラーが発生することに注意してください。int
これは、すべてのローカル変数を初期化する必要があるためです。自動デフォルト値は取得されません。
一方、メンバー変数はデフォルト値を取得します。同様に、演算子を使用して配列オブジェクトを作成すると、配列new
の要素が適切な既定値に初期化されます。
はい、プリミティブ型number arrays
の場合、、0
forboolean[]
で初期化します。false
char[]
NULL(ASCII value 0)
objects [] including String[]
null
それが宣言された場所に依存します (関数内のクラスの副の中)。クラスメンバー変数の場合、デフォルトに初期化されます。数値型の場合は 0 (float 型 / double の場合は 0.0)、文字列の場合は null、ブール値の場合は false、オブジェクトの場合は null。関数内で宣言されている場合、 の場合は初期化されないままになりint alone
ます。配列に関しては、常にその中に含まれる値を初期化します。