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