10.
配列
配列(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);