JavaのindexOf完全ガイド|基礎から実務での使い分けまで解説
CONTENTS
文字列検索メソッドの全体像
Javaには複数の検索手段があります。まずは役割の違いを整理しましょう。
主要メソッドの使い分け
| 目的 | メソッド | 特徴 |
|---|---|---|
| 存在チェック | contains | true / falseだけ返す |
| 位置取得 | indexOf | 最初の位置を返す |
| 後ろから検索 | lastIndexOf | 最後の位置を返す |
| 複雑な条件 | 正規表現 | 柔軟だがやや重い |
具体イメージ
String s = "hello@example.com";
s.contains("@"); // true
s.indexOf("@"); // 5
s.lastIndexOf(".");// 13
どれを選べばいい?
- 条件分岐だけ → contains
- 切り出ししたい → indexOf
- 拡張子など後ろ基準 → lastIndexOf
- パターン検索 → 正規表現
👉 最初に全体像を持つと理解が速い
👉 実際に試すと違いがすぐ分かります
ZeroCodePLUSで手を動かして確認するのがおすすめです
indexOfとは?何を返すメソッドなのか

indexOfは、
指定した要素の「位置」を返すメソッドです。
基本例
重要ポイント
- 返すのは「位置(int)」
- 見つからない → -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の列数推定
- 入力妥当性チェック
などに使われます。
👉 エラーは実際に体験すると理解が深まります
ZeroCodePLUSで再現→修正まで試すのがおすすめです
実務でよくある活用例と落とし穴

substringと組み合わせた抽出
「キー=値」の分解
splitよりも
意図が明確で壊れにくい実装です。
substringについてはぜひこちらの記事もご参考ください!
List / 配列でのindexOf
- equalsで一致判定
- 見つからない場合は-1
自作クラスはequals/hashCode必須
NullPointerException対策
- 外部入力は必ずnullを想定
- ガード節で早期return
NullPointerExceptionについてはぜひこちらの記事もご参考ください!
学習を加速させるなら
indexOfは理解より「慣れ」が重要です。
よくある壁
- -1の扱いでミス
- substringと組み合わせて混乱
- 実務イメージが湧かない
👉 これらは手を動かすと解決します
ZeroCodePLUSの活用
- 環境構築不要
- ブラウザですぐ実行
- 失敗しながら学べる
まとめ
- indexOfは「位置」を返すメソッド
- 0始まり、見つからない場合は-1
- fromIndexで複数出現を扱える
- substringと組み合わせて初めて実務で活きる
- ListやStringBuilderでも同じ発想で使える
indexOfを正しく扱えるようになると、文字列処理の事故は確実に減ります。