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

インデックスと値
配列はインデックス(Index)と値(value)で構成されます。インデックスは0, 1, 2 .... ,n-1の整数値をとり、n個の値があります。
配列 = [値0, 値1, 値2,... 値n-1];
配列を使わない場合
いくつかの飲み物を定義する例を考えてみましょう。 配列を使わないとデータの種類ごとに変数を用意しなければいけません。
String drink1 = "コーヒー";
String drink2 = "紅茶";
String drink3 = "ほうじ茶";
配列を使った場合
配列を使うと複数のデータを1つの変数にまとめることができます。
配列の定義
配列の宣言
Javaの配列定義はデータ型に [ ] をつけて宣言します。
データ型[] 変数名;
要素数での初期化
空の配列を作成することを初期化といい、データの入れ物を用意するようなイメージです。
配列のデータ定義
データは { } の中に値を設定します。1つ1つの値は 「 , 」(カンマ)で区切ります。
データ型[] 変数名 = { 値1, 値2, 値3 ...}
配列を使ってみよう
ファイル構成
src/
└── sample/
└── Drink.java
配列のデータ作成
変数「drinks」を文字列型の配列 String[] で定義し、データも初期化しておきます。
String[] drinks = { "コーヒー", "紅茶", "ほうじ茶" };
配列の文字列をコンソール表示
配列の文字列をコンソール表示してみましょう。
sample/Drink.java
String[] drinks = {"コーヒー", "紅茶", "ほうじ茶"};
System.out.println(drinks);
結果
[Ljava.lang.String;@7ad041f3
String型に変換
配列の中身のデータは直接表示できないので、Arrays.toString() で配列をString型に変換します。
Arrays.toString(配列)
配列オブジェクト表示
drinks を文字列に変換してコンソール表示してみましょう。
sample/Drink.java
String arrayString = Arrays.toString(drinks);
System.out.println(arrayString);
結果
[コーヒー, 紅茶, ほうじ茶]
配列の値を取得
配列の値を取得するにはインデックス(キー) を使います。インデックスは 0 からの連番を指定します。
値 = 配列名[index];
キーを指定してデータを取得する
配列の中から「紅茶」を取得してみましょう。

「紅茶」を取得する
「紅茶」は 2番目にあるのでインデックスは 1 です。取得したデータをコンソール表示してみましょう。
sample/Drink.java
String selectDrink = drinks[1];
System.out.println(selectDrink);
結果
紅茶
配列の値を更新
指定したインデックスの値を更新
配列の値は、インデックスを指定して =(イコール) で更新します。
配列[index] = 値;
「紅茶」を「ウーロン茶」で更新
「紅茶」を「ウーロン茶」で更新してみましょう。
sample/Drink.java
drinks[1] = "ウーロン茶";
System.out.println(drinks[1]);
結果
2番目のデータ
ウーロン茶
その他の初期化方法
要素数で初期化
要素数をあらかじめ決めてから配列を初期化できます。
型名[] 変数名 = new 型名[要素数];
int型の配列を、要素数 3で初期化します。
sample/Drink.java
int[] numbers = new int[3];
変数の代入
配列にインデックスを指定して代入して、コンソール表示します。
sample/Drink.java
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
要素数のエラー
要素数より大きいインデックスで値を代入できません。つぎのコードはランタイムエラーになります。
sample/Drink.java
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
価格(int)の配列 prices を作成して、コンソール表示してみましょう。
データ
[350, 400, 300]
問題2
prices から、2番目の値をコンソール表示してみましょう。
問題3
「グー」「チョキ」「パー」をランダムにコンソール表示してみましょう。1〜3のランダムな数字は、Random() で処理できます。
Random rand = new Random();
int handIndex = rand.nextInt(3);