JavaのindexOf完全ガイド|基礎から実務での使い分けまで解説
CONTENTS
indexOfとは?何を返すメソッドなのか

JavaのindexOfは、文字列やリストの中から「指定した要素が最初に現れる位置」を取得するメソッドです。
戻り値は一致した要素そのものではなく、位置(インデックス)を表すint値になります。
このように、eが見つかった位置「1」が返ります。
indexOfの重要ポイント
- 返すのは「場所(位置)」
- 見つからない場合は -1
- 0始まりのインデックス
位置が分かることで、
- substringで切り出す
- 次の検索開始位置にする
- 条件分岐の基準にする
といった 加工処理の土台になります。
containsとの使い分け
| 目的 | 推奨メソッド |
|---|---|
| 存在するかだけ知りたい | contains |
| 位置が必要 | indexOf |
正規表現との違い
indexOfは連続した完全一致のみを対象とします。
柔軟なパターン検索が必要な場合は、Pattern / Matcherを使います。
インデックスの考え方と-1の扱い
0始まりのインデックス
Javaの文字列は0始まりです。
| 文字 | A | B | C | D | E |
|---|---|---|---|---|---|
| index | 0 | 1 | 2 | 3 | 4 |
length()は文字数であり、最後のインデックスではありません。
見つからない場合は-1
これは例外ではなく、正常な戻り値です。
-1チェックを怠ると起きる事故
=がなければ -1 + 1 = 0 となり、
意図しない文字列や例外につながります。
安全な書き方
String.indexOfの基本的な使い方

charを検索する
- 1文字検索は
char指定が最も読みやすい - Unicodeコードポイントとして扱われる
文字列を検索する
- 戻り値は「一致が始まる位置」
- 日本語も問題なく扱える
fromIndexで開始位置を指定する
2回目以降の検索や、
複数出現の列挙に必須の機能です。
大文字・小文字の違い
indexOfは 大文字小文字を区別します。
対策例
lastIndexOfと複数出現の探索パターン

lastIndexOfの使いどころ
末尾基準の区切りを扱うときに最適です。
複数回出現する位置をすべて取得する
| 重なり | startの更新 |
|---|---|
| 許す | pos + 1 |
| 許さない | pos + target.length() |
出現回数を数える
- CSVの列数推定
- 入力妥当性チェック
などに使われます。
実務でよくある活用例と落とし穴

substringと組み合わせた抽出
「キー=値」の分解
splitよりも
意図が明確で壊れにくい実装です。
substringについてはぜひこちらの記事もご参考ください!
List / 配列でのindexOf
- equalsで一致判定
- 見つからない場合は-1
自作クラスはequals/hashCode必須
NullPointerException対策
- 外部入力は必ずnullを想定
- ガード節で早期return
NullPointerExceptionについてはぜひこちらの記事もご参考ください!
まとめ
- indexOfは「位置」を返すメソッド
- 0始まり、見つからない場合は-1
- fromIndexで複数出現を扱える
- substringと組み合わせて初めて実務で活きる
- ListやStringBuilderでも同じ発想で使える
indexOfを正しく扱えるようになると、文字列処理の事故は確実に減ります。