Java入門⑪ 配列 ── たくさんのデータを、まとめて持つ
Java入門⑪ 配列 ── たくさんのデータを、まとめて持つ
前回まで、くり返し(for・while)をやってきました。
今回からは、たくさんのデータをまとめて扱う配列(はいれつ)です。くり返しと組み合わさると、大きな力になります。
配列とは、同じ種類のデータを、まとめて入れられる箱です。
なぜ、まとめる必要があるのか
第2回で「変数は、データを入れる箱」とやりました。3人のテストの点数なら、変数3つで書けます。でも、40人のクラスだったら? 変数を40個も用意するのは、現実的ではありません。
そこで使うのが、配列です。ひとつの名前で、たくさんのデータをまとめて持てます。料理でいうなら、仕切りのある弁当箱。ひとつの箱の中に、いくつもの仕切りがあって、それぞれにおかずが入っている、そんなイメージです。
書き方を見てみる
3人の点数を、配列にまとめます。
int[] scores = {80, 95, 70};
int[](int の後ろに角カッコ)は、「整数を、まとめて入れる箱」という意味です。scores に、80・95・70 の3つが入りました。
中身を取り出すときは、番号(インデックス)を使います。
System.out.println(scores[0]); // 80
System.out.println(scores[1]); // 95
System.out.println(scores[2]); // 70
scores[0] は「scores の0番目」という意味です。
また「0から始まる」
第8回(for文)でも出てきた感覚が、再登場します。配列の番号は、0から始まります。
scores[0] → 80 (1番目だけど、番号は0)
scores[1] → 95 (2番目だけど、番号は1)
scores[2] → 70 (3番目だけど、番号は2)
「1番目が0番」というのは、慣れるまで不思議です。でも、for文のときと同じ「0から数え始める」ルール。プログラミングではこれが基本です。
くり返しと組み合わせる ── ここが本領
配列が本当に強いのは、くり返し(for文)と組み合わせたときです。
int[] scores = {80, 95, 70};
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
実行すると、80・95・70 が順に表示されます。
scores[i]… カウンターiを番号に使い、0番、1番、2番…と順に取り出すscores.length… 配列の中身の個数(ここでは3)
i が 0,1,2 と変わりながら、scores[0], scores[1], scores[2] を順に取り出している。for文のカウンターが、配列の番号とぴったり噛み合うんです。これが、第8回で「カウンターをうまく使うのがコツ」と書いた理由です。
(C#では .Length でしたが、Javaは .length(小文字スタート)です。細かいですが、間違えやすいので注意。)
つまずきポイント
学生が必ず一度はやるのが、存在しない番号を指定することです。
int[] scores = {80, 95, 70}; // 0番〜2番まで(3個)
System.out.println(scores[3]); // 3番は無い!エラー
3個の配列なら、番号は 0・1・2 まで。3番は存在しません。なのに scores[3] と書くと、エラーになります(Javaでは「ArrayIndexOutOfBoundsException」という、長い名前のエラーが出ます)。
「0から始まるから、最後の番号は『個数マイナス1』」。3個なら、最後は2番。この感覚に慣れるまでは、よく出るエラーです。「番号、はみ出してないかな?」と疑ってみてください。
まとめ
配列は、同じ種類のデータをまとめて持つ箱。
int[] scores = {80, 95, 70};
System.out.println(scores[0]); // 番号で取り出す(0から始まる)
- 番号(インデックス)は 0から始まる
.lengthで個数が分かる(小文字スタート)- for文と組み合わせると、全部まとめて処理できる
次回は、配列によく似ているけれど、もっと柔軟な ArrayList を紹介します。

