配列って何?たくさんのデータをスッキリ整理整頓しよう!

docs

皆さん、こんにちは!Javaの勉強、順調に進んでいますか? 以前の記事(変数って何? データの入れ物を理解しよう | ToolDocs)では、変数を使ってデータを一つだけ格納する方法を学びましたよね。例えば、String name = "佐藤"; のように、一つの名前を保存できました。

でも、ちょっと考えてみてください。もし、クラス全員の名前を保存したいとか、テストの点数を全員分記録したい、なんてことになったらどうでしょう?一人ずつ変数を用意していたら、あっという間に変数の数がすごいことになっちゃいますよね?

そこで登場するのが、今回の主役**「配列」**なんです!配列は、**同じ種類のデータをまとめて扱うことができる「データの入れ物」**だと思ってください。まさに、たくさんのデータを整理整頓するための便利な道具なんですよ!

配列は「整理棚」みたいなもの!

イメージとしては、引き出しがたくさん並んだ「整理棚」を思い浮かべると分かりやすいかもしれません。 それぞれの引き出しには、同じ種類のものがしまってあります。例えば、1段目の引き出しには「佐藤さんの点数」、2段目には「田中さんの点数」、3段目には「鈴木さんの点数」といった具合です。

Javaの配列も全く同じで、「同じ種類のデータ」を、まるで引き出しのように順番に並べて格納できるんです。

配列を使わないとどうなる?(地獄絵図…)

配列を使わないでたくさんのデータを扱おうとすると、本当に大変なんです。 例えば、5人のテストの点数を変数で表そうとすると…

Java

int score1 = 85;
int score2 = 92;
int score3 = 78;
int score4 = 65;
int score5 = 95;

こんな感じで、点数の数だけ変数を宣言しないといけません。 もしこれが50人、100人、いや1000人になったら…?考えるだけでもゾッとしますよね。

配列を使えばスッキリ解決!

でも、配列を使えばたった1行で解決できちゃいます!

Java

int[] scores = {85, 92, 78, 65, 95};

どうですか?たった1行で5人分の点数をまとめて扱えるようになりました! これが配列の最大の魅力なんです。

配列の宣言と初期化

それでは、実際にJavaで配列を宣言したり、値を格納したりする方法を見ていきましょう。

配列を宣言する基本的な形はこれです。

Java

データ型[] 配列名;

データ型の後に[]をつけるのがポイントです。これで「この変数は配列ですよー」とJavaに教えてあげているわけですね。

そして、配列を実際に使うためには、メモリ上にどれくらいの大きさの箱を用意するのか、つまり「配列の長さ」を決めてあげる必要があります。これを**「初期化」**と呼びます。

初期化の方法はいくつかあります。

1. 要素の数を指定して初期化

まず、配列に入れる要素の数をあらかじめ決めて初期化する方法です。

Java

int[] numbers = new int[3]; // int型の要素を3つ格納できる配列を生成

このコードは、「int型のデータを3つ入れられる配列numbersを作ってくださいね」という意味になります。 この段階では、それぞれの要素には0(数値型の場合)やnull(参照型の場合)などのデフォルト値が入っています。

2. 初期値を指定して初期化

配列を宣言すると同時に、中に格納する値を指定してしまうこともできます。

Java

String[] fruits = {"apple", "banana", "orange"}; // String型の配列に初期値を指定

このコードは、「String型の配列fruitsを宣言して、最初から"apple", "banana", "orange"を入れておいてくださいね」という意味です。この場合、配列の長さは自動的に3になります。

配列の要素にアクセスしよう!

配列にデータを入れたら、次はそれを取り出したり、変更したりする方法を知りたいですよね。 配列のそれぞれの引き出しには、**「インデックス(添字)」**という番号がついています。

重要なポイント! インデックスは「0」から始まるんです!

例えば、3つの要素を持つ配列fruitsがあったとして…

  • fruits[0]:1番目の要素("apple"
  • fruits[1]:2番目の要素("banana"
  • fruits[2]:3番目の要素("orange"

となります。間違えて「1」から数えないように注意してくださいね!

実際にコードで見てみましょう。

Java

String[] fruits = {"apple", "banana", "orange"};

// 1番目の要素("apple")を取り出して表示
System.out.println(fruits[0]); // 実行結果: apple

// 2番目の要素("banana")を別の値に変更
fruits[1] = "grape";
System.out.println(fruits[1]); // 実行結果: grape

このように、配列名[インデックス]と書くことで、特定の要素にアクセスすることができます。

配列の長さを取得する

配列がどれくらいの長さなのか(いくつの要素を格納できるのか)を知りたい場合は、lengthというプロパティを使います。

Java

int[] scores = {85, 92, 78, 65, 95};
System.out.println("配列の長さは: " + scores.length + "です。"); // 実行結果: 配列の長さは: 5です。

lengthは配列の要素数そのものを表しているので、インデックスの最大値はlength - 1になることを覚えておきましょう。

paizaで実行した結果

for文と配列は相性抜群!

配列の全ての要素を順番に処理したい、なんていう時に大活躍するのがforです。 前回の記事(https://tooldocs.net/)でfor文を学びましたよね?あれがここで活きてきます!

例えば、先ほどのscores配列の全ての点数を表示したい場合、for文を使わないと…

Java

System.out.println(scores[0]);
System.out.println(scores[1]);
System.out.println(scores[2]);
System.out.println(scores[3]);
System.out.println(scores[4]);

と、要素の数だけSystem.out.println()を書かないといけません。 でも、for文を使えばスッキリ!

Java

int[] scores = {85, 92, 78, 65, 95};

for (int i = 0; i < scores.length; i++) {
    System.out.println(i + "番目の点数は: " + scores[i]);
}
/* 実行結果:
0番目の点数は: 85
1番目の点数は: 92
2番目の点数は: 78
3番目の点数は: 65
4番目の点数は: 95
*/

for文の初期値i0から始め、scores.length(配列の長さ)より小さい間繰り返すことで、配列の全ての要素に順番にアクセスできます。iがインデックスとして使われているのが分かりますね。

paizaで実行した結果

拡張for文(for-each文)でもっと簡単に!

Javaには、配列やコレクションの要素を順番に処理するのに特化した**「拡張for文(for-each文)」**というものもあります。これを使うと、もっとシンプルに書けるんですよ!

Java

int[] scores = {85, 92, 78, 65, 95};

for (int score : scores) { // scores配列の各要素をscoreという変数に順番に取り出す
    System.out.println("点数: " + score);
}
/* 実行結果:
点数: 85
点数: 92
点数: 78
点数: 65
点数: 95
*/

for (データ型 変数名 : 配列名)という形で書きます。 これは「scores配列から要素を一つずつ取り出して、それをscoreという変数に入れてね」という意味になります。インデックスを意識しなくていいので、より直感的に書けますね。

paizaで実行した結果

配列を使うときの注意点!

配列は便利なのですが、いくつか注意しておきたい点があります。

1. 配列の長さは一度決めると変更できない

Javaの配列は、一度宣言して長さを決めてしまうと、後からその長さを変えることはできません。 例えば、int[] numbers = new int[3];と宣言したら、後から要素を4つに増やしたり、2つに減らしたりすることはできません。

もし、要素数が可変のデータを扱いたい場合は、次回以降で学ぶ**「ArrayList」**などのコレクションを使うことになります。

2. 存在しないインデックスにアクセスするとエラー!

これはとっても大事な注意点です! 配列の範囲を超えたインデックスにアクセスしようとすると、ArrayIndexOutOfBoundsExceptionというエラーが発生してプログラムが停止してしまいます。

Java

String[] fruits = {"apple", "banana", "orange"};

System.out.println(fruits[3]); // これはエラーになります!

fruits配列のインデックスは0から2までなので、fruits[3]は存在しない場所を指しています。 配列を使うときは、必ずインデックスの範囲に気をつけましょう!特にfor文を使うときなどは、ループの条件式が正しいか何度も確認するようにしてくださいね。

paizaで実行した結果


まとめ

今回の記事では、「配列」について詳しく解説しました。

  • 配列とは、同じ種類のデータをまとめて扱うことができる「データの入れ物」
  • 配列を使うことで、たくさんのデータを効率的に管理できる
  • 配列の要素には**「インデックス(添字)」**を使ってアクセスし、インデックスは「0」から始まる
  • 配列の長さは配列名.lengthで取得できる
  • for文や拡張for文を使うと、配列の要素を順番に処理できる
  • 一度決めた配列の長さは変更できない
  • 存在しないインデックスにアクセスするとエラーになるので注意!

配列はJavaプログラミングの基本中の基本であり、様々な場面で活用することになります。 最初はインデックスが0から始まることに戸惑うかもしれませんが、たくさんコードを書いて慣れていくうちに、きっと自由自在に使いこなせるようになりますよ!

コメント

タイトルとURLをコピーしました