JavaのStringクラス入門:基本と文字列操作
CONTENTS
JavaのStringクラスとは?初心者が最初につまずく理由

Javaで文字列を扱う中心的な存在が Stringクラスです。
"Hello" のように直感的に書ける一方で、参照型・不変性・比較方法といった理解不足から、初学者が最初につまずきやすいポイントでもあります。
Stringの本質は、次の2点に集約されます。
- Stringは参照型(オブジェクト)
- Stringは不変(immutable)
この前提を理解できると、
- なぜ
==では比較できないのか - なぜループ内の文字列結合が遅くなるのか
- なぜ
NullPointerExceptionが起きるのか
といった疑問が一気に整理されます。
👉 コードを実際に動かしながら理解したい人は、
ブラウザ上でJavaを実行できる学習コンテンツ ZeroCodePlus を併用すると、理解が定着しやすくなります。
Stringの生成方法とcharとの違い
リテラルによるString生成
Javaではダブルクォートで囲んだ文字列は、自動的に String オブジェクトになります。
同じリテラルは内部で共有されることがあり、メモリ効率も良好です。
⚠️ 注意点
- 同じ内容でも「同じインスタンス」とは限らない
- 等価比較は必ず
equals()を使う
new Stringはなぜ非推奨?
この書き方は 基本的に不要 です。
- 内容が同じでも別インスタンスになる
- メモリを無駄に消費する
==比較のバグを誘発しやすい
例外的に使うのは、char[] や byte[] から生成する場合です。
Stringとcharの違い
| 型 | 意味 | 例 |
|---|---|---|
| char | 1文字(プリミティブ) | 'A' |
| String | 文字列(参照型) | "A" |
char はUTF-16のコード単位なので、
絵文字などは 見た目1文字でもcharが2つ になる点に注意が必要です。
インデックスと文字数の考え方

Stringの操作で必ず出てくるのが インデックスとlength() です。
- インデックスは 0始まり
length()は 文字数ではなくchar数
substringの考え方は「文字と文字の間に番号がある」と理解すると混乱しません。
👉substringについてはぜひこちらの記事もご参考ください!
よく使うStringの基本操作
文字列の結合方法まとめ
| 方法 | 向いている場面 |
|---|---|
+ |
短い結合・可読性重視 |
concat |
文字列同士の明示的結合 |
StringBuilder |
ループ・大量結合 |
String.join |
区切り付き結合 |
分割(split / lines)
⚠️ split は 正規表現 なので、. や | にはエスケープが必要です。
Java 11以降なら lines() も便利です。
検索・判定・比較の基本
equalsは必須
==は参照比較- null安全に書くなら 固定文字.equals(変数)
nullと""の違い
| 状態 | 意味 |
|---|---|
| null | 参照が存在しない |
| "" | 長さ0の文字列 |
実務では、境界で""に正規化するとバグが激減します。
nullや空文字の違いなどについてはぜひこちらの記事もご参考ください!
型変換と実務でのエラー対策
⚠️ 失敗すると NumberFormatException
そのため、
- try-catchで制御
- 事前バリデーション
- 入力仕様の明文化
が重要になります。
Stringを扱う上での注意点まとめ
- Stringは 不変
- ループ結合は StringBuilder
- 正規表現は 必要なときだけ
- Unicode・ロケールを意識する
このあたりを押さえると、「なんとなく動くコード」から「壊れにくいコード」に進化します。
まとめ|Stringを理解した次のステップへ

StringはJavaの中で最も使用頻度が高いクラスです。
だからこそ、
- 参照型
- 不変性
- 比較方法
- パフォーマンス
を正しく理解することが、エンジニアとしての基礎体力になります。
もし、
- 「コードを動かしながら理解したい」
- 「独学でつまずかずに進めたい」
- 「実務に近い形でJavaを学びたい」
と感じているなら、
ブラウザだけで学習できる Java学習コンテンツ「ZeroCodePlus」 を活用してみてください。
👉 読む → 書く → 動かす を一気に体験することで、理解スピードが大きく変わります。