1. ホーム
  2. java

[解決済み] Javaにおける配列のデフォルトの初期化とは何ですか?

2022-04-25 04:04:05

質問

int型配列の宣言と初期化をしているところです。

static final int UN = 0;
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
    arr[i] = UN;
}

代わりにこうすると...。

int[] arr = new int[5];
System.out.println(arr[0]);

... 0 は標準出力にプリントされます。また、こうすると

static final int UN = 0;
int[] arr = new int[5];
System.out.println(arr[0]==UN);

... true は標準出力にプリントされます。では、Javaはデフォルトでどのように私の配列を初期化しているのでしょうか?デフォルトの初期化では、配列のインデックスを 0 ということは、配列をループして初期化する必要はないのでしょうか?

ありがとうございます。

解決方法は?

Javaプログラムでは、プログラマーが明示的に設定しないものは、すべて0に初期化されます。

  • である参照(オブジェクトを保持するもの)については、以下のようになります。 null .
  • であるint/short/byte/longの場合。 0 .
  • であるfloat/doubleの場合。 0.0
  • ブーリアンの場合は false .
  • ヌル文字であるcharの場合 '\u0000' (10進数で0に相当)。

何かの配列を作成すると、すべてのエントリもゼロになります。 つまり によって作成された直後の配列には、5つのゼロが含まれています。 new .

注意(コメントより)。 Java仮想マシンは、ローカル変数を割り当てるときに基礎となるメモリをゼロにする必要はありません(これは、必要に応じて効率的なスタック操作を可能にします)ので、ランダムな値を避けるために、Java言語仕様はローカル変数を初期化することを要求しています。