配列の要素の初期化と規定値

配列を作成すると各要素にはデータ型に応じて規定値が代入されます。また配列を作成するときに値を指定することで、任意の値を配列の各要素に初期値として代入することができます。ここでは配列の要素を初期化する方法、および要素の規定値について解説します。

(Last modified: )

要素の規定値

変数の場合、「値が代入されていない変数を参照した場合」で記載したように変数を宣言してから一度も値を代入しない状態で変数参照すると、コンパイル時にエラーとなります。

配列の場合は配列を作成した時点でそれぞれの要素にはデータ型に応じた規定値が代入されています。次のサンプルをみてください。

int[] num = new int[2];

System.out.println(num[0]);  // 0
System.out.println(num[1]);  // 0

配列を宣言し、配列を作成したあとで各要素に値を一度も代入しないまま要素の値を参照していますが、コンパイル時にはエラーとはなりません。値を出力してみると 0 が格納されていることが確認できます。

要素の規定値は、数値型の場合はそれぞれ 0 が代入され、 boolean 型の場合は false 、 String 型など参照型のデータ型の場合は null となっています。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample5-1.java という名前で保存します。

class JSample5_1{
  public static void main(String[] args){
    int[] i = new int[1];
    System.out.println("int : " + i[0]);

    long[] l = new long[1];
    System.out.println("long : " + l[0]);

    double[] d = new double[1];
    System.out.println("double ; " + d[0]);

    boolean[] b = new boolean[1];
    System.out.println("boolean : " + b[0]);

    String[] str = new String[1];
    System.out.println("String : " + str[0]);
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample5_1.java

その後で、次のように実行してください。

java JSample5_1

要素の規定値(1)

int 型、 long 型、 double 型、 boolean 型、 Sting 型の値をそれぞれ格納する配列を作成したあと、配列の各要素の規定値を参照しました。

要素を任意の値で初期化する

配列を作成するとデータ型に応じた規定値が格納されますが、配列の宣言時に任意の値で初期化することもできます。初期化する場合の書式は次のとおりです。

データ型[] 配列変数名 = {値1, 値2, ...}

配列の宣言時に初期化を行うと、記述した値の数の要素を持つ配列を作成し、各要素に値をそれぞれ代入します。

次のサンプルをみてください。

int[] num = {4, 10, 7};

System.out.println(num[0]);  // 4
System.out.println(num[1]);  // 10
System.out.println(num[2]);  // 7

int 型の値を格納する配列を宣言し、 3 つの要素を持つ配列を作成した上でそれぞれの要素に 4, 10, 7 を代入しています。これは次のように記述した場合と同じです。

int[] num = new int[3];

num[0] = 4;
num[1] = 10;
num[2] = 7;

なお var を利用した型推論を使って配列を宣言し、初期値を代入する場合は次のように記述する必要があります。

var 配列変数名 = new データ型[]{値1, 値2, ...}

例えば次のように記述します。

var num = new int[]{4, 10, 7};

作成済の配列変数に初期値を代入する

作成済の配列変数に対して次のように初期値を代入することはできません。コンパイル時にエラーとなります。

int[] num = new int[3];
num = {4, 10, 7};

もし作成済の配列変数に対して要素の値をまとめて代入する場合は、意味合いは違いますが次のように記述してください。初期化された新しい配列を作成し、その配列への参照を作成済の配列変数に代入します。

int[] num = new int[3];
num = new int[]{4, 10, 7};
サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample5-2.java という名前で保存します。

class JSample5_2{
  public static void main(String[] args){
    String[] str = {"Apple", "Orange", "Melon"};

    for (int i = 0; i < 3; i++){
      System.out.println(str[i]);
    }
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample5_2.java

その後で、次のように実行してください。

java JSample5_2

要素を任意の値で初期化する(1)

String 型の配列を宣言すると同時に初期化を行いました。そのあとで配列の要素を順に参照して画面に表示しています。

-- --

配列の要素を初期化する方法、および要素の規定値について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。