カテゴリ: Java 更新日: 2026/01/31

JavaのIndexOutOfBoundsExceptionを完全ガイド!初心者でも理解できる例外処理と回避方法

IndexOutOfBoundsExceptionクラス
IndexOutOfBoundsExceptionクラス

教材紹介 Java学習のおすすめ教材

Javaの基礎を体系的に整理しながら学習したい方には、 資格対策としても定評のある定番教材が参考になります。

Javaプログラマ Silver SE 17 教科書をAmazonで見る

※ Amazon広告リンク

先生と生徒の会話形式で理解しよう

生徒

「Javaのプログラムを実行していたら、IndexOutOfBoundsExceptionっていうエラーが出て止まってしまいました。これはどういう意味なんですか?」

先生

「IndexOutOfBoundsExceptionは、Javaで配列や文字列などの要素を扱うときに、存在しない位置にアクセスしようとしたときに発生する例外です。初心者がつまずきやすいポイントなので、しっかり理解しておきましょう。」

生徒

「なるほど。じゃあ、どんなときに発生するのか具体的に知りたいです!」

先生

「それでは、基本的な使い方と発生するケースを例を交えて解説していきますね。」

1. IndexOutOfBoundsExceptionとは?

1. IndexOutOfBoundsExceptionとは?
1. IndexOutOfBoundsExceptionとは?

JavaのIndexOutOfBoundsExceptionは、配列やリスト、文字列のインデックスが範囲外になったときにスローされるランタイム例外です。このクラスはjava.langパッケージに含まれており、特別なインポートをしなくても自動的に使える仕組みになっています。例えば、配列の要素が3つしかないのに、4番目を取得しようとした場合に発生します。

2. 配列でのIndexOutOfBoundsException

2. 配列でのIndexOutOfBoundsException
2. 配列でのIndexOutOfBoundsException

最もよくあるのが配列のアクセス時です。配列のインデックスは必ず0から始まり、要素数−1までしか使えません。初心者は「要素数と同じインデックスまで使える」と勘違いしやすいので注意が必要です。


public class ArrayExample {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30};
        System.out.println(numbers[3]); // 存在しないインデックス
    }
}

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3

このように、配列の範囲を超えるインデックスを指定するとエラーが発生します。配列の長さはlengthプロパティで確認できるため、必ず範囲内かを意識しましょう。

3. 文字列でのIndexOutOfBoundsException

3. 文字列でのIndexOutOfBoundsException
3. 文字列でのIndexOutOfBoundsException

Stringクラスのメソッドでも範囲外アクセスは起こります。特にcharAtsubstringで発生しやすいです。


public class StringExample {
    public static void main(String[] args) {
        String text = "Java";
        System.out.println(text.charAt(4)); // 存在しない文字
    }
}

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Index 4 out of range for length 4

文字列は長さ4ですが、インデックスは0から3までしか使えません。これを知らないと簡単にエラーが出てしまうため、必ずlength()メソッドで長さを確認してから使いましょう。

Javaの基礎を最初から体系的に学びたい人には、 初心者向けで定評のある定番入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. リストやコレクションでのIndexOutOfBoundsException

4. リストやコレクションでのIndexOutOfBoundsException
4. リストやコレクションでのIndexOutOfBoundsException

JavaのArrayListや他のコレクションでも、インデックス範囲外アクセスで同じ例外が発生します。配列と違って要素を動的に追加できるリストでも、存在しない位置を指定するとエラーになります。


import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        System.out.println(list.get(2)); // 存在しない要素
    }
}

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2

コレクション操作では、要素数をsize()メソッドで確認してからインデックスを指定する習慣をつけると安全です。

5. IndexOutOfBoundsExceptionを回避する方法

5. IndexOutOfBoundsExceptionを回避する方法
5. IndexOutOfBoundsExceptionを回避する方法

この例外を避けるためには、必ずインデックスが範囲内かを確認することが重要です。次のような方法があります。

  • 配列ならlengthプロパティを利用する
  • 文字列ならlength()メソッドで確認する
  • リストならsize()メソッドを利用する

public class SafeExample {
    public static void main(String[] args) {
        String text = "Java";
        int index = 3;
        if (index < text.length()) {
            System.out.println(text.charAt(index));
        } else {
            System.out.println("範囲外アクセスです");
        }
    }
}

a

このように条件分岐を入れることで、不要な例外を防ぐことができます。例外処理としてtry-catchを使う方法もありますが、基本的には事前に範囲を確認するのがベストプラクティスです。

6. try-catchでの例外処理

6. try-catchでの例外処理
6. try-catchでの例外処理

場合によっては、プログラムを止めずに例外を処理したいこともあります。そのときにはtry-catch構文を使います。


public class TryCatchExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        try {
            System.out.println(numbers[5]);
        } catch (IndexOutOfBoundsException e) {
            System.out.println("例外が発生しました: " + e.getMessage());
        }
    }
}

例外が発生しました: Index 5 out of bounds for length 3

このように、エラーが出てもプログラムを続行できます。ただし、例外処理に頼るのではなく、正しいインデックス管理を心がけることが大切です。

7. 初心者が注意すべきポイント

7. 初心者が注意すべきポイント
7. 初心者が注意すべきポイント

初心者がよく間違えるのは、配列や文字列の長さを正しく理解していないことです。例えば、要素数が3の配列に対して「3番目まである」と考えてしまうケースです。しかし、実際には0から始まるので最後の要素はインデックス2になります。このズレがIndexOutOfBoundsExceptionの最大の原因です。

また、文字列のsubstringを使うときに、終了インデックスを誤って指定すると例外が出ることもあります。特にループ処理やユーザー入力を扱うときは必ず境界チェックを入れる習慣を持ちましょう。

カテゴリの一覧へ
新着記事
JavaのIndexOutOfBoundsExceptionを完全ガイド!初心者でも理解できる例外処理と回避方法
スッキリわかるJava入門 第4版|独学でもレッスンでも学べる完全ガイド
JavaのCookieクラスのgetCommentメソッドを解説!Servlet開発でクッキーの説明文を取得する方法
JavaのBufferedOutputStreamクラスのwriteメソッドを徹底解説!初心者でもわかるファイルへのバイナリ書き込み
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.3
Java&Spring記事人気No3
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.4
Java&Spring記事人気No4
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
No.8
Java&Spring記事人気No8
SpringのPageableとSortでページング一覧APIを最短実装!初心者向け完全ガイド

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク