【Java】大量のデータも怖くない!「配列」の基本をマスターしよう
はじめに
みなさんどうも、おげんです。
これまでの記事で、変数を使ってデータを保存したり、for文やwhile文で処理を繰り返したりする方法を学んできました。
でも、こんな場面を想像してみてください。
「クラス30人分のテストの点数を管理して、全員分を画面に表示して!」と言われたら、どうしますか?
今までの知識だと、こうなるはずです。
int score1 = 80;
int score2 = 75;
int score3 = 90;
// ……これを30個書くの!?さらに表示する時も、System.out.println を30回書く…。
正直、100人分だったら絶望しますよね(笑)。
私も最初は「これ、手作業と変わらなくない?」と思っていました。
そんな「大量のデータをスマートにまとめたい!」という悩みを一瞬で解決してくれるのが、今回紹介する 「配列(Array)」 です。
これを使えば、30人分でも100人分でも、たった一つの「箱」で管理できるようになります。
エンジニアが大量のデータを一気に、そして正確に処理するための必須テクニックを、解説していきます!
- 似たような変数をたくさん作って、コードがぐちゃぐちゃになっている人
- 「[0]」とか「[1]」とか、数字がついた変数の正体を知りたい人
- 大量のデータを一瞬で処理する「エンジニアの魔法」を体験したい人
配列は「仕切り付きのロングロッカー」
配列を理解する一番の近道は、「同じ大きさの箱がつながったロングロッカー」をイメージすることです。
一つの大きな「ロッカー」という箱の中に、仕切りがあって、そこに複数のデータをしまえる仕組みになっています。
【超重要】数え方は「0番目」からスタート!
ここで、プログラミング初心者が必ずと言っていいほどハマる、最大のルールが登場します。
Javaの世界では、ロッカーの番号(これを インデックス と呼びます)は 「0」から数え始めます。
- 1番目の箱 → インデックスは [0]
- 2番目の箱 → インデックスは [1]
- 3番目の箱 → インデックスは [2]
「なんで1からじゃないの!?」と最初は思うかもしれません(私もそうでした笑)。
でも、これはコンピュータが「基準の場所から、いくつズレているか」で場所を特定しているからなんです。
- 0番目:基準の場所そのもの
- 1番目:基準から1つズレた場所
「最初は違和感があるけど、これがエンジニアの共通言語なんだ」と、まずは自分を納得させてあげてください。
慣れてくると、逆に1から始まると「えっ、0は?」と不安になるようになりますよ(笑)。
配列の強み
- 同じ種類なら何でも入る:整数のロッカー、文字のロッカーなど、用途に合わせて作れます。
- 住所(番号)がある:番号さえわかれば、いつでも中身を取り出したり書き換えたりできます。
配列の作り方と使い方
配列を使うには、まずJavaに「ロッカーを何個分用意してね!」とお願いする必要があります。
① 配列を準備する(宣言と生成)
まずは、5人分の点数を入れるロッカーを作ってみましょう。
int[] scores = new int[5];int[]: 「整数のロッカー(配列)ですよ!」という宣言。scores: ロッカーの名前(何でもOK!)。new int[5]: 「新しい(new)5個分の仕切りがあるロッカーを作って!」という命令。
これで、Javaがメモリの中に「5つ空きがあるロッカー」を確保してくれます。
② 値を入れる(代入)
作ったロッカーに、実際に点数を入れていきます。
ここで「0番目」スタートを思い出しましょう!
scores[0] = 80; // 1番目のロッカー
scores[1] = 95; // 2番目のロッカー
scores[2] = 70; // 3番目のロッカー③ 値を取り出す(参照)
取り出す時も、番号を指定するだけです。
System.out.println("1番目の人の点数は " + scores[0] + " 点です。");最初は「int[] って書いたり new int[5] って書いたり、長くて面倒だな」って思うかもしれません。
でも、これって「ロッカーの種類」と「ロッカーのサイズ」をJavaにハッキリ伝えているんです。
生真面目なJavaに「適当にいい感じの箱を用意して!」は通じません。
だからこそ、この丁寧な書き方が大事なんですね。
配列 × for文 = 魔法の自動化
配列の本当の凄さは、for文(繰り返し)と組み合わせた時に爆発します。
さっきの5人分の点数、1行ずつ表示するのはやっぱり面倒ですよね。でも、for文を使えば、たとえデータが100人分になってもたった3行で終わります。
魔法のコードを見てみよう
int[] scores = {80, 95, 70, 65, 90}; // 配列の準備(ショートカット版!)
for (int i = 0; i < scores.length; i++) {
System.out.println((i + 1) + "番目の点数は" + scores[i] + "点です");
}ここが「楽」をするポイント!
- カウンター変数
iをそのまま使う- これで、ロッカーを順番に自動で開けていけるんです。
- for文の
i(0, 1, 2…)を、そのまま配列のインデックスscores[i]として使っちゃいます。
scores.lengthという必殺技- これ、めちゃくちゃ便利です。
- 配列の名前のあとに
.lengthと付けるだけで、「このロッカー、全部で何個ある?」 という数をJavaが自動で数えてくれます。 - これを使えば、後からロッカーを10個に増やしても100個に増やしても、for文のコードを書き直す必要が一切ありません!
注意!「存在しないロッカー」を開けないで
配列を扱っていると、突然画面が真っ赤になって、Javaがこんな叫び声を上げることがあります。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException「うわっ、なんかすごい長くて怖いのが出た!」と焦るかもしれませんが、安心してください。
これ、翻訳するとこう言っているだけなんです。
「用意されたロッカーの番号を、はみ出してるよ!」
なぜ怒られるの?
例えば、5個分のロッカー(インデックス 0〜4)を作ったのに、うっかり「6番目を見せて!」と指示しちゃうと発生します。
int[] scores = new int[5];
System.out.println(scores[5]); // 5番目(実は6つ目)を指定してしまった!Javaは、言われたことには忠実ですが、存在しない場所については「えっ、どこ!? 無理無理!」とパニックになって止まってしまいます。
実はこのエラー、for文の条件式を書き間違えたときによく起きます。
i < scores.lengthならOK。i <= scores.lengthとしちゃうと、最後にはみ出してエラー!
「エラーが出た!」と落ち込む必要はありません。
「おっと、Java、ロッカーの端っこで迷子になっちゃったかな?」と、for文の条件式を見直してあげましょう。
実はこれ、エンジニア転職の面接や試験でも「よくあるエラーは?」と聞かれたときに真っ先に名前が上がるものなので、覚えておくと「お、わかってるな!」と思ってもらえますよ。
深掘り:呪文のようなエラー名を解剖してみよう
ArrayIndexOutOfBoundsException これ、初めて見た時は「呪文かよ!」って突っ込みたくなりますよね(笑)。
でも、単語をバラバラにしてみると、実はすごくシンプルなことを言っているんです。
- Array(アレイ):配列
- Index(インデックス):添え字(ロッカーの番号)
- Out Of Bounds(アウト・オブ・バウンズ):範囲外、はみ出している
- Exception(エクセプション):例外(エラーのこと)
つなげると、「配列の番号が、決まった範囲からはみ出してるよエラー」という意味になります。
スポーツでも、ボールがコートの外に出ることを「アウト・オブ・バウンズ」って言いますよね。
それと同じで、Javaが「おいおい、そこは僕の管理してるコートの外だよ!」とホイッスルを吹いて教えてくれているんです。
これを知っておくだけで、画面にこの文字が出た時に「あ、番号がズレてるだけか」って冷静になれますよ!
まとめ:配列は大量データを扱う「整理棚」
今回は、たくさんのデータをひとまとめに管理できる「配列」について解説しました。
- 配列は、同じ種類のデータを入れる「仕切り付きロッカー」。
- 数え方は必ず「0」からスタートする(エンジニアの鉄則!)。
.lengthを使えば、データの数をJava君が自動で数えてくれる。- for文と組み合わせることで、100個のデータも一瞬で処理できる。
- 範囲外を指定すると
ArrayIndexOutOfBoundsException(はみ出しエラー)が出る。
最初は「0から数える」ことに違和感があったり、エラー名が長くて驚いたりするかもしれません。
でも、配列をマスターすると、バラバラだった変数がスッキリ整理されて、コードが劇的にプロっぽくなります。
「大量のデータを一気に、正確に操る」。 これこそが、プログラミングの醍醐味であり、エンジニアとしての楽しさが詰まった部分です。
ぜひ、自分の好きなもの(プロテインの味、好きなゲームのキャラ、1週間の予定など)を配列に入れて、for文で表示させる練習をしてみてくださいね!
今回も最後まで読んでいただき、ありがとうございました。 一緒に進んでいきましょう!



