Javaの配列の基本を、例題つきでやさしく解説
初めての配列は「同じ種類のデータを、番号つきの箱に並べて保管する仕組み」と考えると分かりやすいです。1つの変数に1つの値しか入れられないのに対して、配列はたくさんの値をまとめて管理できます。
配列ってなに?
- イメージ: 本棚に同じサイズの本が並んでいて、左から0番・1番…と番号が振られている感じ。
- 特徴: 中身はすべて同じ型(全部int、全部Stringなど)。番号(インデックス)は必ず0から始まる。
- 使いどころ: テストの点数一覧、ユーザー名のリスト、月ごとの売上など「同じ種類が複数ある」もの。
配列の作り方(宣言と作成)
- 宣言: どんな型の配列かを決める
例: intの配列を使いたいとき
int[] scores;
Java- 作成: 何個分の箱(要素)を用意するか決める
scores = new int[5]; // 5個分のintを入れられる
Java- 一行でまとめる書き方:
int[] scores = new int[5];
Java例題1:3人分の年齢を保存して表示する
int[] ages = new int[3]; // 3つの箱
ages[0] = 18; // 0番目の箱に18
ages[1] = 21; // 1番目の箱に21
ages[2] = 20; // 2番目の箱に20
System.out.println(ages[0]); // 18
System.out.println(ages[1]); // 21
System.out.println(ages[2]); // 20
Java要素番号(インデックス)は0から
- 基本: 一番目は0、二番目は1、三番目は2…と数える。
- 注意: 用意した数より大きい番号は使えない(エラーの原因)。
例題2:インデックスの範囲を確認する
int[] nums = new int[2]; // 要素は0番と1番の2つ
nums[0] = 10;
nums[1] = 20;
// nums[2] = 30; // ← これはエラー(範囲外)
Javaまとめて処理するならfor文が便利
- 配列とfor文の相性: 「全要素に同じことをしたい」時に最強。
- 配列の長さ:
配列名.lengthで要素数が分かる。
例題3:全要素を順番に表示する
int[] scores = new int[5];
scores[0] = 70;
scores[1] = 85;
scores[2] = 90;
scores[3] = 60;
scores[4] = 100;
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
Java例題4:合計と平均を求める
int[] scores = {70, 85, 90, 60, 100}; // こんな初期化もできる
int sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
double avg = (double) sum / scores.length;
System.out.println("合計: " + sum);
System.out.println("平均: " + avg);
Java作りながら中身を入れる「初期化」
- 波括弧で並べる: 宣言と同時に値を入れられる
String[] names = {"Alice", "Bob", "Charlie"};
Java- あとから作る場合:
newが必要
String[] names;
names = new String[]{"Alice", "Bob", "Charlie"};
Java配列は「参照型」
- ポイント: 変数には配列そのものではなく「配列の場所の情報(参照)」が入っている。
- 結果: 別の変数に代入すると、同じ配列を指すことになる。
例題5:参照の共有を体感する
int[] data = {1, 2, 3};
int[] other = data; // 同じ配列を指す
other[0] = 99; // otherから変更
System.out.println(data[0]); // 99 と表示される(dataも変わる)
Javaよくあるつまずきポイント
- 範囲外アクセス:
i が0 <= i < array.lengthを満たしているか常に意識する。 - 未初期化の要素:
newしただけのint配列は全部0、booleanはfalse、参照型はnullが入っている。 - 型の不一致:
int配列に小数(double)を直接入れられない。型を合わせるかキャストが必要。
練習問題
- 問題1: 5人分の身長(int)を配列に入れて、最大値を表示する
// ヒント:
// 1) int[] heights = { ... };
// 2) max を最初の要素で初期化
// 3) forで回して、より大きければ更新
Java- 問題2: 4科目の点数(int)から合格判定
合格ライン70点。全科目が70以上なら「合格」、1つでも未満があれば「不合格」。
// ヒント:
// 1) boolean passed = true;
// 2) forで各点をチェック、70未満なら passed = false;
// 3) 最後に passed を見て表示
Java- 問題3: 文字列配列から特定の名前を探す
名前が見つかったらインデックスを表示、なければ「見つかりません」。
// ヒント:
// 1) forで全要素を探索
// 2) equalsで文字列比較: names[i].equals(target)
Java次のステップ
- 拡張for文:
for (int x : array) { ... }でシンプルに書ける(インデックスが不要なときに便利)。 - 多次元配列: 行列のように「配列の中に配列」を持たせることもできる(例:
int[][] grid)。 - 配列の限界: 要素数を後から増やせない。増減が必要なら
ArrayListを学ぶとよい。
配列は「同じ型をまとめる道具」。まずは「宣言 → 作成 → 値を入れる → 取り出す → まとめて処理」の流れを手で書いて動かしてみてください。
