Java道|配列の宣言・確保・代入の基本

配列は、宣言して、箱を用意して、値を入れる。
この準備の流れがわかると、たくさんのデータ管理がぐっと楽になる。

前回までに、配列は「同じ型の値をまとめて扱える便利な仕組み」だと学びました。
ただし、Javaでは配列をいきなり使い始めることはできません。

配列を使うには、まず配列を扱うための変数を用意し、そのあとで実際に値を入れるための箱を必要な数だけ準備します。
さらに、その箱のどこに値を入れるのかを、添字という番号で指定して代入していきます。

つまり、配列を使うまでには、大きく次の流れがあります。

手順内容
1配列変数を宣言する
2要素を確保する
3添字を指定して値を代入する

↓クリックすると拡大表示されます。

鬼滅の刃風にたとえると、配列の準備は「隊士たちの訓練記録を保管する棚を作る流れ」です。
まず、棚に test という名前札を付けます。
次に、点数を入れる引き出しを5個並べます。
そして、それぞれの引き出しに 80、60、22 のような訓練点数を入れていきます。

名前札だけでは記録は入れられません。
引き出しを用意して、はじめて点数をしまえるようになります。
この「宣言」「確保」「代入」の流れをしっかり押さえることが、配列を使いこなす第一歩です。

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

Javaで配列を使うときは、最初に2つの準備が必要です。

準備内容鬼滅の刃風のイメージ
配列の宣言配列を扱うための変数を用意する棚に名前札を付ける
要素の確保値を入れる箱を必要な数だけ作る実際の引き出しを並べる

この2つは似ているようで、役割が違います。

配列変数を宣言しただけでは、まだ値を入れる箱はありません。
あくまで「この名前で配列を扱います」と決めただけです。

一方、要素を確保すると、実際に値を入れる箱が用意されます。
この段階になって、はじめて点数や数値を入れられるようになります。

鬼滅の刃風にたとえると、隊士の訓練記録棚に test という札を貼っただけでは、まだ記録用の引き出しはありません。
そのあとで5個の引き出しを用意して、ようやく5人分の点数を入れられる状態になります。

配列の宣言とは何か

配列の宣言とは、配列を扱うための変数を用意することです。

たとえば、整数を複数まとめて扱いたい場合は、int型の配列を扱う変数を用意します。

配列の宣言では、普通の変数とは違い、型のあとに [] を付けます。

書き方の考え方意味
int score整数を1つ扱う変数
int[] test整数を複数扱う配列変数

ここで大切なのは、int と int[] は意味が違うという点です。

int は、整数を1つ入れるための型です。
int[] は、整数の配列を扱うための型です。

つまり、int[] test と宣言すると、test は「整数を複数まとめた配列を扱うための変数」になります。

鬼滅の刃風にたとえると、int score は「1人の隊士の点数札」です。
一方、int[] test は「複数の隊士の点数札をまとめて扱うための記録棚の名前」です。

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

ここは、とてもつまずきやすいポイントです。

配列変数を宣言しただけでは、まだ値を入れるための箱はありません。
つまり、配列の準備はまだ途中です。

状態できること
配列変数だけを宣言した状態配列を扱う名前だけがある
要素を確保した状態実際に値を入れる箱がある

鬼滅の刃風にたとえると、test という名前札を作っただけでは、まだ引き出しがありません。
名前札だけを持っていても、そこに訓練点数はしまえません。

配列も同じです。
配列変数を宣言したあとに、要素を確保する必要があります。

この「宣言だけではまだ使えない」という感覚を持っておくと、配列の仕組みがかなり理解しやすくなります。

要素の確保とは何か

要素の確保とは、配列の中に値を入れるための箱を必要な数だけ用意することです。

たとえば、整数を5個入れたいなら、5個分の要素を確保します。

このとき使うのが new です。

部分意味
new新しく配列を作る
int整数を入れる配列であることを表す
[5]要素を5個用意する

つまり、整数を5個入れられる配列を新しく作り、その配列を test という配列変数に結びつける、という流れになります。

鬼滅の刃風にたとえると、new は「新しい記録棚を作る合図」です。
int[5] は「整数の訓練点数を入れる引き出しを5個作る」という意味です。

宣言と確保を分けて考える

配列では、宣言と確保を分けて考えることがとても大切です。

作業役割
配列の宣言配列を扱う変数を用意する
要素の確保実際に値を入れる箱を用意する

この2つがそろって、配列を使う準備が整います。

状態鬼滅の刃風のイメージ
宣言だけ棚の名前札だけある
確保まで完了名前札の先に引き出しが並んでいる
代入まで完了引き出しに実際の点数が入っている

このように考えると、配列の準備はかなりイメージしやすくなります。

図:配列の宣言と要素の確保

↓クリックすると拡大表示されます。

この図が示していること

この図では、配列を使う前に必要な準備の流れを表しています。

最初に test という配列変数を用意します。
次に、値を入れるための箱を5個確保します。
そして、test という名前から、その5個の箱を扱えるようになります。

ここからわかることは、配列では「名前を用意すること」と「実際の箱を用意すること」が別の作業だということです。

宣言だけでは値を入れられません。
要素を確保して、はじめて配列の中に値を入れる準備が整います。

配列の要素とは何か

配列の中にある1つ1つの箱を要素といいます。

5個の要素を持つ配列なら、それぞれの要素には番号が付いています。
この番号を使って、どの箱を使うのかを指定します。

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

Javaの配列では、最初の添字は 0 です。
ここはとても大切です。

5個の要素を確保した場合、使える添字は 0、1、2、3、4 です。
5個あるからといって、最後の添字が 5 になるわけではありません。

要素数使える添字最後の添字
50から44
100から99
300から2929

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

鬼滅の刃風にたとえると、訓練記録棚に5つの引き出しがある場合、番号札は 0番から4番までです。
5番の引き出しは存在しません。

添字は0から始まる

配列の添字が0から始まることは、最初のうちは少し不思議に感じるかもしれません。
でも、Javaではこのルールが基本です。

考え方内容
最初の要素添字 0
2番目の要素添字 1
3番目の要素添字 2
最後の要素要素数 - 1

このルールを忘れて、存在しない添字を指定すると、配列の範囲外にアクセスしようとしてしまいます。

たとえば、5個の要素しかない配列で、6個目の場所を指定しようとするようなものです。
鬼滅の刃風にたとえると、0番から4番までしかない訓練記録棚で、5番の引き出しを開けようとしている状態です。
当然、そこには引き出しがありません。

配列では、「要素数が5なら最後は4」と覚えておくと安心です。

配列に値を代入する方法

配列の要素を確保したら、各要素に値を入れられるようになります。

配列に値を入れるときは、どの要素に入れるのかを添字で指定します。

基本の考え方は次の通りです。

書き方の考え方意味
配列変数名[添字] = 値指定した場所に値を入れる

たとえば、添字 0 の場所に 80 を入れるなら、0番の箱を指定して 80 を代入します。
添字 1 の場所に 60 を入れるなら、1番の箱を指定して 60 を代入します。

配列では、配列全体にまとめて何かを入れるというより、1つ1つの要素を指定して値を入れると考えるとわかりやすいです。

添字代入される値
080
160
222
350
475

鬼滅の刃風にたとえると、0番の引き出しに80点の札を入れ、1番の引き出しに60点の札を入れ、2番の引き出しに22点の札を入れていくイメージです。

配列要素への代入は普通の変数に似ている

配列の要素への代入は、普通の変数への代入と似ています。

ただし、配列では「どの要素か」を添字で指定する必要があります。

種類指定の仕方
普通の変数変数名で指定する
配列の要素配列変数名[添字] で指定する

普通の変数では、変数名そのものが1つの値を表します。
でも配列では、test だけでは個々の値を表しません。

test[0]、test[1]、test[2] のように、添字を付けてはじめて特定の要素を指し示せます。

この考え方は、配列を扱ううえでとても大切です。

図:配列の各要素に値を代入する

↓クリックすると拡大表示されます。

この図が示していること

この図では、配列の各要素に値を1つずつ代入している様子を表しています。

test[0] には 80、test[1] には 60、test[2] には 22 というように、添字を指定して値を入れています。

ここからわかることは、配列では「どの箱に値を入れるのか」を添字で明確に指定する必要があるということです。

配列名だけでは、個別の要素を指定できません。
test[0] や test[1] のように、配列名と添字を組み合わせて、はじめて特定の要素を扱えます。

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

配列変数は、配列全体を扱うための目印だと考えるとわかりやすいです。

少しだけイメージを深めると、配列変数そのものが値を全部直接持っているというより、その先にある配列のまとまりを扱うための入口のようなものです。

用語イメージ
配列変数配列全体を扱うための目印
配列要素実際に値が入る1つ1つの箱
添字どの箱かを示す番号

鬼滅の刃風にたとえると、test は訓練記録棚に向かう案内札です。
実際の点数は、test[0]、test[1]、test[2] のような各引き出しに入っています。

この感覚を持っておくと、この先で配列を別の変数に代入したり、メソッドに渡したりする内容を学ぶときにも理解しやすくなります。

配列の準備の流れを整理する

配列を使う流れは、次の3段階で考えると整理しやすいです。

順番作業内容
1宣言配列を扱う変数を用意する
2確保値を入れる要素を必要な数だけ作る
3代入添字を指定して値を入れる

鬼滅の刃風にたとえると、次の流れです。

Javaの流れ鬼滅の刃風のイメージ
配列変数を宣言する記録棚に test という名前札を付ける
要素を確保する引き出しを5個並べる
値を代入する各引き出しに訓練点数を入れる

この流れをしっかり押さえておくと、配列の準備で迷いにくくなります。

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

配列の宣言・確保・代入では、次のポイントをしっかり覚えておきましょう。

ポイント内容
配列を使うには準備が必要宣言と要素の確保が必要
宣言だけでは値を入れられない箱がまだ用意されていない
要素を確保して箱を作る必要な数だけ値を入れる場所を作る
添字で場所を指定するどの要素を使うか番号で選ぶ
添字は0から始まる最初の要素は0番
最後の添字は要素数 - 15個なら最後は4番
代入は要素ごとに行う配列名[添字] で場所を指定する

特に大切なのは、宣言だけではまだ配列の中身を使えないという点です。

配列変数を用意するだけではなく、要素を確保して、そこに値を入れていく。
この3段階の流れをしっかり意識しましょう。

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

配列の宣言、要素の確保、値の代入は、見た目だけならそれほど難しく感じないかもしれません。

でも、ここで仕組みをしっかり理解しておくと、この先の配列学習がかなり楽になります。

これから先では、次のような内容につながっていきます。

この先の学習今回の内容とのつながり
配列の初期化宣言・確保・代入をまとめて行う考え方につながる
配列から値を取り出す添字で要素を指定する考え方が必要
配列の長さ要素数と添字の関係が必要
for文との組み合わせ添字を順番に変えながら要素を処理する
合計や平均の計算各要素の値を順に扱う

鬼滅の刃風にたとえると、今回の内容は「訓練記録棚を作り、引き出しを並べ、点数札を入れる準備」です。
この棚ができているからこそ、あとで全員分の点数を確認したり、合計したり、最高点を探したりできるようになります。

配列の基本は宣言・確保・代入の流れで考える

配列を使うときは、まず次の順番を思い出しましょう。

流れ意味
配列変数を用意する配列を扱う名前を作る
要素を確保する値を入れる箱を作る
添字を指定して代入するどの箱に値を入れるか決める

配列は、同じ型の値をまとめて扱うためのとても便利な仕組みです。
ただし、使う前には準備が必要です。

宣言だけで終わらず、要素を確保する。
要素を確保したら、添字を使って値を入れる。
そして、添字は0から始まる。

この流れが頭の中でつながると、配列の扱いはぐっとわかりやすくなります。