配列(Array)とは

配列はデータの箱

配列(Array)は複数の値を箱にいれるためのデータフォーマットです。

インデックスと値

配列はインデックス(Index)と値(value)で構成されます。インデックスは0, 1, 2 .... ,n-1の整数値をとり、n個の値があります。

配列 = [値0, 値1, 値2,... 値n-1];

配列を使わない場合

いくつかの飲み物を定義する例を考えてみましょう。 配列を使わないとデータの種類ごとに変数を用意しなければいけません。

String drink1 = "コーヒー";
String drink2 = "紅茶";
String drink3 = "ほうじ茶";

配列を使った場合

配列を使うと複数のデータを1つの変数にまとめることができます。

配列の定義

配列の宣言

Javaの配列定義はデータ型と [ ] で宣言します。

データ型[] 変数名;

要素数での初期化

空の配列を作成することを初期化といい、データの入れ物を用意するようなイメージです。配列の初期化では、いくつデータを用意するかの要素数を指定することができます。

型名[] 変数名 = new 型名[要素数];

配列のデータ定義

データは { } の中に値を設定します。1つ1つの値は 「 , 」(カンマ)で区切ります。

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

配列を使ってみよう

ファイル構成

src/
  └── sample/
        └── Drink.java

配列のデータ作成

変数「drinks」を文字列型の配列 String[] で定義し、データも初期化しておきます。

String[] drinks = { "コーヒー", "紅茶", "ほうじ茶" };

配列の文字列をコンソール表示

配列の文字列をコンソール表示してみましょう。

String[] drinks = {"コーヒー", "紅茶", "ほうじ茶"};
System.out.println(drinks);
結果

配列が表示されましたが、値は表示されません。

String型に変換

配列のデータは一括でコンソール表示できないので、Arrays.toString() で配列をString型に変換します。

Arrays.toString(配列)

drinks を文字列に変換してコンソール表示してみましょう。

String arrayString = Arrays.toString(drinks);
System.out.println(arrayString);
結果

配列の中の文字列が表示されました。

[コーヒー, 紅茶, ほうじ茶]

配列の値を取得

配列の値を取得するにはインデックス(キー) を使います。インデックスは 0 からの連番を指定します。

配列名[index];

キーを指定してデータを取得する

配列の中から「紅茶」を取得してみましょう。

「紅茶」を取得する

「紅茶」は 2番目にあるのでインデックスは 1 です。取得したデータをコンソール表示してみましょう。

String selectDrink = drinks[1];
System.out.println(selectDrink);
結果
紅茶

配列の値を更新

指定したインデックスの値を更新

配列の値は、インデックスを指定して =(イコール) で更新します。

配列[index] = 値;

「紅茶」を「ウーロン茶」で更新

「紅茶」を「ウーロン茶」で更新してみましょう。

drinks[1] = "ウーロン茶";
System.out.println(drinks[1]);
結果
2番目のデータ
ウーロン茶

要素数で初期化

配列は要素数をあらかじめ決めて、初期化できます。

要素数で初期化

int型の配列を、要素数3で初期化します。

int[] numbers = new int[3];

変数の代入

用意した配列に値を代入して、コンソール表示してみましょう。

int[] numbers = new int[3];
numbers[0] = 55;
numbers[1] = 31;
numbers[2] = 72;

System.out.println(numbers[0]);
System.out.println(numbers[1]);
System.out.println(numbers[2]);
結果
55
31
72

要素数のエラー

要素数より大きいインデックスで値を代入できません。つぎのコードはランタイムエラーになります。

numbers[3] = 20;
System.out.println(numbers[3]);
結果
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
	at sample.Drink.main(Drink.java:31)

演習

問題1

値段の変数「prices」を配列で作成して、コンソール表示してみましょう。

データ
[350, 400, 300]

問題2

「prices」から2番目の値をコンソール表示してみましょう。

問題3(高難易度)

「グー」「チョキ」「パー」をランダムにコンソール表示してみましょう。1〜3のランダムな数字は、Random() で計算できます。

Random rand = new Random();
int handIndex = rand.nextInt(3);