Java | 配列の「長さ」を取得する

Java Java
スポンサーリンク

配列の長さ(length)を初心者向けにやさしく・詳しく解説

まず結論

配列の長さ(要素の個数)は .length で取得します。length は読み取り専用(変更できない)ので、「この値が配列の現在の要素数」を教えてくれるメモです。


1. 「配列」と「長さ」をイメージで理解する

配列は同じ種類の箱が横に並んだものだと考えてください。
int[] nums = new int[4]; は「4つ並んだ整数用の箱」を作ったという意味です。

  • 箱の数(要素の個数)=長さ(length)
  • 箱のラベル(インデックス)は 0 から始まる → 最後の箱は length - 1

2. 基本の書き方(例)

int[] nums = new int[3];   // 長さ 3 の配列(要素は初期値 0)
nums[0] = 14;
nums[1] = 7;
nums[2] = 9;

System.out.println(nums.length);  // 出力: 3
Java

3. よく使うパターン:全要素を処理する(for)

配列を順番に処理する時、length を使うのが鉄則です。こうすると最後のインデックスの超過を防げます。

for (int i = 0; i < nums.length; i++) {
    System.out.println("index " + i + " => " + nums[i]);
}
Java

出力:

index 0 => 14
index 1 => 7
index 2 => 9

拡張 for(for-each)

配列を順に読むだけなら拡張 for 文でもOK:

for (int v : nums) {
    System.out.println(v);
}
Java

拡張 for はインデックスが不要なときにシンプルで読みやすいです。ただしインデックスでの書き換えや並べ替えでインデックスが必要なら普通の for を使います。


4. 最後の要素にアクセスするとき

最後の要素は array[array.length - 1] です。例:

int last = nums[nums.length - 1];
Java

length - 1 を忘れると ArrayIndexOutOfBoundsException(配列外アクセス)になります。


5. length は変えられない

Java の配列は固定長です。宣言(new)したときに長さが決まり、その後 array.length = 10; のように代入して変更することはできません。可変長が欲しい場合は ArrayList などを使います。

// 可変長が必要なとき
import java.util.ArrayList;
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.size(); // 長さは .size() で取得(配列は .length)
Java

6. 2次元配列(多次元配列)の注意点

2次元配列 int[][] table の場合:

  • table.length は「行数(第一次元の長さ)」を返します。
  • 各行の長さは table[i].length(行ごとに長さが違うこともあります)。
    例:
int[][] table = new int[2][3]; // 2行3列(各行は長さ3)
System.out.println(table.length);     // 2
System.out.println(table[0].length);  // 3
Java

7. よくあるミス(初心者がやりがち)

  • off-by-one(i <= array.length と書いてしまう)→ 最後に ArrayIndexOutOfBoundsException
for (int i = 0; i <= nums.length; i++) { // NG
    // i==nums.length のとき nums[i] は存在しない
}
Java
  • array == null のチェックを忘れていると NullPointerException
  • length を変更しようとする(できません)
  • ArrayList と混同して .length.size() を間違える

8. 練習問題(初心者〜中級) — 解答付き

問題1(基礎)

次の配列の長さと最後の要素を答えよ。

int[] a = {5, 8, 3, 12};
Java

解答

  • 長さ: a.length4
  • 最後の要素: a[a.length - 1]12

問題2(ループ)

配列 int[] b = {2, 4, 6, 8, 10}; の全要素を1行ずつ出力する for 文を書け(インデックスも表示すること)。
解答例

int[] b = {2,4,6,8,10};
for (int i = 0; i < b.length; i++) {
    System.out.println("b[" + i + "] = " + b[i]);
}
Java

問題3(合計を出す)

配列 int[] c = {3, 1, 4, 1, 5}; の要素の合計を求めるコードを書け。
解答例

int[] c = {3,1,4,1,5};
int sum = 0;
for (int i = 0; i < c.length; i++) {
    sum += c[i];
}
System.out.println(sum); // 14
Java

問題4(最後から2番目)

配列 int[] d = {9, 8, 7, 6}; の「最後から2番目」の要素を取得する式を書け。
解答

int secondLast = d[d.length - 2]; // 7
Java

問題5(応用)

文字列配列 String[] names の中で、長さ(文字数)が最も長い名前を探して表示するプログラムを作れ。配列の長さは不明(0 の可能性もある)とする。
解答例

String[] names = {"Amy", "Christopher", "Bob", "Alexandra"};
if (names == null || names.length == 0) {
    System.out.println("配列が空です");
} else {
    String longest = names[0];
    for (int i = 1; i < names.length; i++) {
        if (names[i].length() > longest.length()) {
            longest = names[i];
        }
    }
    System.out.println("最長の名前: " + longest); // Alexandra
}
Java

学習のコツ・まとめ

  • 配列の最後のインデックスは length - 1。これを常に意識する。
  • 配列の長さは fix(不変)で、数を変えたければ ArrayList を使う。
  • ループ文で i < array.length を使えば安全に配列全体を処理できる。
  • 多次元配列は「各次元ごとに .length がある」ことを理解する(行ごとに長さが違うこともある)。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました