Java入門|配列のしくみと使い方

たくさんのデータも、配列を使えばすっきり整理できる

Javaでプログラムを書いていると、同じ種類のデータをたくさんまとめて扱いたい場面がよく出てきます。たとえば、クラス全員のテストの点数、1週間の気温、12か月分の売上、ゲームのプレイヤーごとのスコアなどです。

こうしたデータを1つずつ別の変数で管理しようとすると、変数の数がどんどん増えてしまい、コードが見づらくなったり、処理を書くのが大変になったりします。そこで活躍するのが配列です。

配列は、同じ型のデータをひとまとめにして扱える仕組みです。Javaの学習ではとても大切な基本機能の1つで、これを理解すると、たくさんの値を効率よく処理できるようになります。ここでは、配列とはどんなものなのか、なぜ便利なのか、どのように使うのかを、イメージしやすい形でていねいに見ていきます。

たくさんの値を1つずつ変数で管理するとどうなるのか

まずは、配列を使わない場合を考えてみましょう。たとえば50人分のテストの点数を扱いたいとします。

int test1 = 80;
int test2 = 60;
int test3 = 22;
...
int test50 = 35;

このように書くことはできますが、実際にはかなり大変です。

変数の数が多くなると、次のような問題が出てきます。

問題点内容
コードが長くなる同じような宣言が大量に並び、見づらくなる
ミスが起きやすいtest17 と test18 を取り違えるなどのミスが起こりやすい
処理を書きにくい合計や平均を求めるときに、1つずつ書く必要がある
管理しにくい人数が増えたり減ったりしたときに修正が面倒になる

たとえば、50人分の点数の合計を出そうとすると、配列を使わない場合はかなり面倒です。

int total = test1 + test2 + test3 + ... + test50;

このような書き方は現実的ではありません。ここで、同じ型の値をまとめて管理できる配列がとても便利になります。

配列とは何か

配列は、同じ型の値を複数まとめて記憶するための仕組みです。

ふつうの変数は、1つの名前に対して1つの値を入れるイメージでした。たとえば、score という変数に 80 を入れる、という形です。

int score = 80;

これに対して配列は、1つの配列名の中に、複数の値を並べて持つことができます。

たとえば、5人分の点数を1つにまとめると、次のようなイメージになります。

入れ物の名前中に入る値
scores80, 60, 22, 90, 35

つまり、配列は「同じ種類のデータを並べて保管できる特別な入れ物」と考えるとわかりやすいです。

配列を身近なイメージで考えてみよう

配列は、同じ形の引き出しが横にずらっと並んでいる棚のようなものです。
それぞれの引き出しには1つずつ値を入れることができます。

たとえば、点数を入れる棚を考えると、こんなイメージです。

位置入っている値
080
160
222
390
435

ここで大切なのは、配列の中の1つ1つの場所には番号が付いているということです。
この番号を添字と呼びます。

Javaの配列では、最初の番号は 1 ではなく 0 から始まります。
この点は最初につまずきやすいので、しっかり覚えておきたいポイントです。

配列が便利な理由

配列の便利さは、単に値をまとめて保存できるだけではありません。まとめて扱えるからこそ、繰り返し処理ととても相性がよいのです。

たとえば、配列を使えば、合計や平均の計算、最大値の探索、全員分の表示などを、すっきりと書けるようになります。

配列を使うメリットを整理すると、次のようになります。

メリット説明
同じ型の値をまとめられる点数、売上、気温などを一括で管理できる
名前を大量に作らなくてよいtest1、test2、test3 のように増やす必要がない
繰り返し処理と組み合わせやすいfor文を使って順番に処理しやすい
コードが読みやすくなるデータのまとまりがはっきりする
保守しやすいデータ数の変更にも対応しやすい

変数と配列の違い

変数と配列はどちらも値を記憶するための仕組みですが、使い方にははっきりした違いがあります。

項目変数配列
保存できる値の数1つ複数
向いている場面単独の値を扱うとき同じ型の値をまとめて扱うとき
年齢、身長、合計点生徒全員の点数、12か月分の売上
取り出し方変数名で取り出す配列名と添字で取り出す

たとえば、1人分の点数なら変数でも十分です。

int score = 80;

でも、50人分の点数なら配列のほうが自然です。

int[] scores = new int[50];

このように、1つだけの値なのか、同じ種類の値が複数あるのかで使い分けることが大切です。

配列はどんな場面で使われるのか

配列は、同じ種類のデータが複数ある場面でよく使われます。実際のプログラムでは、かなり多くの場面で登場します。

たとえば、次のようなケースです。

配列に入れるもの
テストの点数管理生徒ごとの点数
売上データ月ごとの売上金額
気温の記録1週間や1か月の気温
ゲームプレイヤーごとの得点
アンケート集計回答結果の数値

たとえば、1週間の気温を扱うならこのように考えられます。

int[] temperature = {18, 20, 19, 22, 21, 17, 16};

この1行だけで、7日分のデータをまとまりとして表現できます。とてもすっきりしていますね。

配列は同じ型だけをまとめる

配列で特に大切なのは、同じ型の値だけをまとめて記憶するという点です。

たとえば、整数を入れる配列には整数だけを入れます。

int[] scores = {80, 60, 22, 90, 35};

文字列を入れる配列なら、文字列だけを入れます。

String[] names = {"佐藤", "鈴木", "高橋"};

このように、1つの配列の中に異なる型を自由に混ぜることはできません。

たとえば、次のような形は配列には向いていません。

  • 名前
  • 年齢
  • 身長
  • 住所

これらは種類が違うデータです。こうした異なる性質の情報をひとまとめに扱いたい場合は、あとで学ぶクラスのほうが適しています。

つまり、配列は同じ型の値を横に並べて扱うのが得意です。
異なる情報を1人分としてまとめたいときはクラスが向いています。

まずは配列を使う目的をしっかり押さえよう

配列の学習では、構文を覚える前に、なぜ配列を使うのかを理解しておくことがとても大切です。

配列の目的は、同じ種類のデータをまとめて管理し、効率よく処理できるようにすることです。

たとえば、次のように考えるとわかりやすいです。

  • 1人の点数を扱うなら変数
  • 30人分の点数を扱うなら配列
  • 1人の名前、年齢、住所をまとめるならクラス

この使い分けが見えてくると、Javaのプログラムがぐっと整理しやすくなります。

この図では、1つの配列の中に5つの値が並んでいる様子を表しています。
上に書かれている 0、1、2、3、4 は添字で、それぞれの場所を区別するための番号です。

たとえば、

  • 添字 0 の場所には 80
  • 添字 1 の場所には 60
  • 添字 2 の場所には 22

が入っています。

このように、配列は値をただ並べるだけではなく、位置番号とセットで管理しているのが大きな特徴です。
この考え方は、このあと配列の要素にアクセスするときにとても重要になります。

配列を学ぶと、この先のJavaが理解しやすくなる

配列は、Javaの基本文法の中でもかなり重要な内容です。なぜなら、配列を理解すると、繰り返し処理との組み合わせ、データの集まりの扱い方、より実践的なプログラムの書き方が見えてくるからです。

たとえば、今後は次のような処理にもつながっていきます。

  • 配列のすべての値を順番に表示する
  • 合計や平均を計算する
  • 最大値や最小値を探す
  • 条件に合う値だけを調べる

こうした処理は、Javaらしいプログラムを書くうえでとても大切です。配列は、その土台になる考え方といえます。

配列は「たくさんの同じ種類のデータ」を扱うための基本機能

ここまで見てきたように、配列は、同じ型の値をひとまとめにして管理するための仕組みです。
たくさんのデータを扱うプログラムでは、変数を1つずつ増やしていくよりも、配列を使ったほうがずっと整理しやすくなります。

特に、テストの点数のように、同じ種類のデータがたくさん並ぶ場面では、配列はとても自然で使いやすい仕組みです。Javaを学ぶうえでは、まずこの基本イメージをしっかり持っておくことが大切です。

このあと配列の宣言、要素の確保、初期化、添字の使い方、配列の長さなどを学んでいくと、配列を実際のコードの中で使いこなせるようになっていきます。まずは、配列とは「同じ型の値をまとめて記憶する仕組み」である、という土台をしっかり押さえておきましょう。