Java入門|配列の宣言と要素の確保

配列の準備を覚えると、たくさんのデータ管理がぐっとラクになる

前回は、配列が「同じ型の値をまとめて扱える便利な仕組み」であることを見てきました。では、実際に配列を使うには、どのような準備をすればよいのでしょうか。

Javaでは、配列をいきなり使い始めることはできません。まずは配列を扱うための変数を用意し、そのあとで実際に値を入れるための箱を必要な数だけ準備する必要があります。この流れをしっかり理解しておくと、配列の使い方がとてもわかりやすくなります。

ここでは、配列の宣言とは何か、要素の確保とは何か、そして準備した配列にどのように値を入れていくのかを、1つずつていねいに見ていきます。特に、添字の考え方はこの先ずっと大切になるので、ここでしっかりイメージをつかんでおきましょう。

配列を使う前に必要な2つの準備

Javaで配列を扱うときには、最初に次の2つの作業を行います。

手順内容
1配列を扱うための変数を用意する
2値を入れるための要素を必要な数だけ確保する

この2つは似ているようで、役割が異なります。
先に結論をいうと、配列変数だけではまだ中身を入れる場所はありません。反対に、要素の確保をすると、はじめて実際に値を入れられる箱が用意されます。

配列の学習では、この「変数を用意すること」と「要素を確保すること」を分けて考えるのがとても大切です。

配列の宣言とは何か

まず最初に行うのが、配列の宣言です。
これは、配列を扱うための変数を用意する作業です。

たとえば、整数を入れる配列を扱いたいなら、次のように書きます。

int[] test;

この1行は、整数をまとめて扱うための配列変数 test を宣言している、という意味です。

ここで注目したいのは、型が int ではなく int[] になっていることです。
これは、「整数が1個入る変数」ではなく、「整数を複数入れる配列を扱う変数」であることを表しています。

普通の変数との違いを比べると、次のようになります。

書き方意味
int score;整数を1つ入れる変数
int[] test;整数を複数入れる配列を扱う変数

つまり、配列の宣言は、たくさんの値をまとめて扱うための入口を作る作業だと考えるとわかりやすいです。

宣言しただけでは、まだ配列は使えない

ここはとても大切なポイントです。
配列変数を宣言しただけでは、まだ値を入れるための箱は用意されていません。

たとえば、次のコードを書いただけでは、配列の準備はまだ不完全です。

int[] test;

この時点では、test という名前の配列変数を用意しただけで、実際に整数を5個入れられる場所や10個入れられる場所ができたわけではありません。

身近なイメージでいうと、

  • 配列変数の宣言 … 棚に名前札を付けた状態
  • 要素の確保 … 実際の引き出しを並べた状態

という感じです。

名前札だけでは物をしまえませんよね。
配列も同じで、次に要素を確保する作業が必要になります。

要素の確保とは何か

次に行うのが、配列要素の確保です。
これは、実際に値を格納するための箱を必要な数だけ用意する作業です。

書き方は次のようになります。

test = new int[5];

このコードは、整数を5個入れられる配列を作り、その配列を test に代入する、という意味です。

ここで出てくる new は、新しく配列を用意するための演算子です。
そして、[5] は要素数を表しています。

つまり、

  • int は整数型
  • [5] は箱を5個用意する
  • new は新しく作る

という意味になります。

この行を書いてはじめて、配列の中に5個分の値を入れられるようになります。

配列の宣言と要素の確保を並べて見てみよう

ここまでの2つの作業をまとめると、次のようになります。

int[] test;
test = new int[5];

この2行で、整数を5個格納できる配列の準備が完了します。

流れを整理すると、次のようになります。

コード役割
int[] test;配列変数を宣言する
test = new int[5];5個分の要素を確保する

この2つがそろって、ようやく配列を使える状態になります。

配列の宣言と要素の確保は、図で考えるとかなり理解しやすくなります。

この図では、まず test という配列変数を用意し、そのあとで5個分の箱を準備している様子を表しています。
横一列に並んだ箱が配列の要素で、それぞれに番号が付いています。この番号が添字です。

この段階では、箱は準備できていますが、まだ値は入っていません。
つまり、配列の準備が終わった状態であり、次に値を代入できるようになるわけです。

配列の要素とは何か

配列の中にある1つ1つの箱のことを要素といいます。
5個の要素を確保した場合、それぞれの要素は次のように表せます。

test[0]
test[1]
test[2]
test[3]
test[4]

このように、配列変数名に [番号] を付けることで、どの箱を使うのかを指定できます。

ここでの番号は、添字またはインデックスと呼ばれます。
添字は、配列の中の位置を表す番号です。

とても大事なのは、Javaの添字は 0 から始まるということです。

添字は0から始まる

Javaの配列では、最初の要素の番号は 1 ではなく 0 です。
ここは初心者の方が特につまずきやすいポイントです。

5個の要素をもつ配列なら、添字は次のようになります。

要素の順番添字
1個目0
2個目1
3個目2
4個目3
5個目4

つまり、最後の添字は要素数そのものではなく、要素数より1小さい値になります。

今回の例では、要素数は5なので、最後の添字は 4 です。

このため、次のような要素は存在します。

test[0]
test[1]
test[2]
test[3]
test[4]

でも、次のような要素は存在しません。

test[5]

ここを間違えてしまうと、配列の範囲を超えた場所にアクセスしようとしてエラーの原因になります。
ですから、配列では「最後の添字は要素数マイナス1」と覚えておくと安心です。

配列に値を代入する方法

配列の準備ができたら、各要素に値を入れられるようになります。
書き方は、普通の変数に値を代入するときとよく似ています。

int[] test;
test = new int[5];

test[0] = 80;
test[1] = 60;
test[2] = 22;
test[3] = 50;
test[4] = 75;

このコードでは、5つの要素にそれぞれ整数値を入れています。

  • test[0] に 80
  • test[1] に 60
  • test[2] に 22
  • test[3] に 50
  • test[4] に 75

という形です。

つまり、配列に値を入れるときは、どの要素に入れるのかを添字で指定して、代入演算子 = を使えばよいのです。

配列要素への代入の書き方

配列に値を代入する基本の形は、次のとおりです。

配列変数名[添字] = 式;

たとえば、3番目の要素に 100 を代入したいなら、次のように書きます。

test[2] = 100;

ここで test[2] は、添字 2 の要素を表しています。
配列ではこのように、配列全体ではなく、個々の要素を指定して値を扱います。

値を代入する場面も、図で見るとかなりイメージしやすいです。

この図では、各要素に1つずつ値が入っていく様子を表しています。
配列では、どの位置に値を入れるかを添字で指定するため、値と箱の対応がはっきりしています。

ふつうの変数では変数名そのものが1つの値を表していましたが、配列では test だけでは個別の値を表せません。
test[0] や test[1] のように、添字を付けてはじめて特定の要素を指し示せるのです。

配列変数は何を表しているのか

ここで、少しイメージを深めておきましょう。
配列変数は、値そのものを直接並べて持っているというより、「配列がある場所を指している」と考えると理解しやすいです。

少し難しく感じるかもしれませんが、感覚としては次のように考えれば十分です。

  • 配列変数 … 配列全体を扱うための目印
  • 配列要素 … 実際に値が入る箱

つまり、test という配列変数があることで、その先に並んでいる test[0]、test[1]、test[2] などの要素を扱えるようになります。

このイメージをもっておくと、あとで配列を別の変数に代入する話や、メソッドに配列を渡す話を学ぶときにも理解しやすくなります。

まず覚えたい大切なポイント

ここまでの内容で、特に大事な点を整理すると次のようになります。

ポイント内容
配列を使う前に必要なこと宣言と要素の確保の2段階が必要
配列の宣言配列を扱う変数を用意すること
要素の確保値を入れる箱を必要な数だけ準備すること
添字要素の位置を表す番号
添字の開始位置0から始まる
最後の添字要素数より1小さい

この6つは、配列の基本として必ず押さえておきたい内容です。

配列の準備はこの先の土台になる

配列の宣言と要素の確保は、見た目としてはそれほど難しい文法ではありません。
ただし、ここで仕組みをしっかり理解しているかどうかで、この先の配列操作の理解しやすさが大きく変わってきます。

特に大切なのは、次の3点です。

  • 配列を使うには、宣言だけでは足りない
  • 要素の確保をしてはじめて値を入れられる
  • 添字は 0 から始まり、最後は要素数マイナス1になる

この3つを頭の中でしっかり整理しておくと、配列への値の代入や、配列から値を取り出す処理もすんなり理解できるようになります。

コード全体を通して確認してみよう

最後に、ここまでの内容をひとまとまりのコードとして見てみましょう。

int[] test;
test = new int[5];

test[0] = 80;
test[1] = 60;
test[2] = 22;
test[3] = 50;
test[4] = 75;

このコードは、次の流れで動いています。

順番処理
1test という配列変数を宣言する
2整数を5個入れられる配列を確保する
3各要素に点数を代入する

このように、配列は準備の手順をきちんと踏むことで、複数の値をすっきり管理できるようになります。

配列は、Javaの学習の中でもとても大事なテーマです。ここで配列の準備の流れをしっかり理解しておくと、このあと学ぶ配列の初期化、値の取り出し、繰り返し処理との組み合わせも、とてもわかりやすくなっていきます。