Javaの配列の初期化を、初心者向けにかみ砕いて解説
「配列」は同じ種類のデータ(同じ型)を、順番に並べて入れておくための道具です。イメージは“同じ形の箱が横に並んだ棚”。箱の位置は左から0番、1番、2番…と番号が振られます(これが「インデックス」)。
配列の超基本
- 配列の役割: 同じ型のデータを、まとめて扱うための並び。
- インデックスは0から: 最初の箱は0番目、次は1番目…と数える。
- 型はそろえる: int配列なら全部int、String配列なら全部String。
// int型の箱を3個並べる棚(配列)を作る
int[] nums = new int[3]; // 箱は3つ:nums[0], nums[1], nums[2]
// 値を入れる(代入)
nums[0] = 10;
nums[1] = 20;
nums[2] = 30;
// 取り出して使う
System.out.println(nums[1]); // 20が表示される
Java初期化の2つの方法
宣言と同時に中身を入れる(短くて便利)
- 特徴: 値を並べて書くだけで完成。サイズは自動で決まる。
int[] scores = { 80, 90, 75 }; // 要素数は3(0〜2)
String[] fruits = { "Apple", "Orange", "Melon" };
Javaまず箱の数だけ決めて、あとから入れる(柔軟)
- 特徴: 先に「何個必要か」を決めて作り、順に代入する。
double[] prices = new double[4]; // 4個ぶんの箱
prices[0] = 120.5;
prices[1] = 98.0;
prices[2] = 300.0;
prices[3] = 150.0;
Java「作った瞬間に入る」初期値(規定値)
- 数値型(int、long、doubleなど): 0(doubleやfloatは0.0)
- boolean: false
- 参照型(String、クラスなど): null(何も入っていない“空っぽ”の印)
int[] a = new int[3]; // {0, 0, 0}
boolean[] flags = new boolean[2]; // {false, false}
String[] names = new String[2]; // {null, null}
System.out.println(a[0]); // 0
System.out.println(flags[1]); // false
System.out.println(names[0]); // null(文字ではなく「何もない」状態)
Javaよくある間違いとコツ
- すでに作った配列に、{}で“まるごと代入”はできない
int[] nums = new int[3];
// nums = {1, 2, 3}; // これはエラー
nums = new int[]{1, 2, 3}; // 「新しく作り直す」形ならOK
Java- サイズ以上のインデックスは使えない
int[] data = new int[2]; // 0と1の2つだけ
// data[2] = 10; // 2は存在しない。エラーになる
Java- Stringのnullと””(空文字)は違う
- null: 何も入っていない(箱が空)。操作するとエラーになりやすい“”: 長さ0の文字列(中身はあるけど空)
String[] s = new String[1]; // {null}
// s[0].length(); // nullに対して操作するとエラー
s[0] = ""; // 空文字を入れる
System.out.println(s[0].length()); // 0
Java例題で理解する
例題1:合計と平均を出す
- 目的: 配列の値をループで回して計算する練習。
int[] scores = { 70, 85, 90, 60 };
int sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
double average = (double) sum / scores.length;
System.out.println("合計: " + sum); // 合計: 305
System.out.println("平均: " + average); // 平均: 76.25
Java- ポイント: 配列の「長さ」は
scores.length。インデックスは0からlength - 1。
例題2:最小値と最大値を探す
- 目的: 比較しながら更新するパターンを覚える。
int[] nums = { 4, 10, -3, 7, 7 };
int min = nums[0];
int max = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] < min) min = nums[i];
if (nums[i] > max) max = nums[i];
}
System.out.println("最小: " + min); // -3
System.out.println("最大: " + max); // 10
Java例題3:文字列配列を結合する
- 目的: 参照型(String)の扱いに慣れる。
String[] words = { "Hello", "Java", "World" };
String sentence = "";
for (int i = 0; i < words.length; i++) {
if (i > 0) {
sentence += " "; // 単語の間にスペースを入れる
}
sentence += words[i];
}
System.out.println(sentence); // Hello Java World
Javaミニ練習問題
- 問題1: 5人分のテスト点を配列で受け取り、80点以上の人数を数えて表示するプログラムを書いてください。
- ヒント: ループで
if (score >= 80)を数える。
- ヒント: ループで
- 問題2:
double[]の価格配列から、税込10%の合計金額を出してください。- ヒント: 1つずつ
price * 1.1を足していく。
- ヒント: 1つずつ
- 問題3: 文字列配列の中に
"Java"が何回あるか数えてください。- ヒント:
if (words[i].equals("Java"))を使う(nullの可能性があるなら null チェックを先に)。
- ヒント:
つまずいたらチェックすること
- インデックスが0から始まっているか
- lengthを使って正しい範囲でループしているか
- 型がそろっているか(int配列に小数や文字列を入れていないか)
- nullを操作していないか(Stringなら equals を呼ぶ前に null チェック)
まとめ
- 配列は“同じ型の箱が並んだ棚”。インデックスは0から。
- 初期化は「宣言と同時に中身を入れる」か「サイズだけ決めて後から入れる」。
- 作成直後は型ごとの初期値が入る(数値は0、booleanはfalse、参照型はnull)。
- 長さは
配列.length、範囲外アクセスと{}の再代入エラーに注意。
