【Java初心者向け】文字列と文字の違いとは?Stringとcharの使い分けをわかりやすく解説
結論として、文字(char)は「1文字だけ」を扱うデータ型、文字列(String)は「複数の文字の集まり」を扱うデータ型です。
Javaを学び始めると、「String」と「char」の違いが分からなくなることがあります。どちらも文字を扱いますが、用途や使い方は大きく異なります。
この記事では、IT業務に従事する初心者向けに、文字列と文字の違い、実務での使い分け、よくあるミスまで分かりやすく解説します。
文字(char)とは
文字(char)は、1文字だけを表すデータ型です。
例えば、次のような文字を扱えます。
| 値 | 内容 |
|---|---|
| ‘A’ | アルファベット1文字 |
| ‘1’ | 数字1文字 |
| ‘あ’ | ひらがな1文字 |
| ‘#’ | 記号1文字 |
charは必ずシングルクォーテーション(’ ‘)で囲みます。
文字列(String)とは
文字列(String)は、複数の文字を並べたデータです。
もちろん、1文字だけの文字列も作成できます。
| 値 | 内容 |
|---|---|
| “A” | 1文字の文字列 |
| “Java” | 4文字の文字列 |
| “Hello World” | 複数の文字列 |
| “” | 空文字列 |
Stringはダブルクォーテーション(” “)で囲みます。
文字列と文字の違い
| 比較項目 | char(文字) | String(文字列) |
|---|---|---|
| 扱える文字数 | 1文字だけ | 1文字以上 |
| 囲み方 | ‘ ‘ | ” “ |
| 種類 | プリミティブ型 | クラス |
| 長さ取得 | 不要 | length()を使用 |
| 主な用途 | 1文字の判定 | 名前や文章の管理 |
どんな場面で使われるのか
charが向いている場面
- 入力された文字が数字か判定する
- アルファベットか確認する
- 記号の判定
- パスワードを1文字ずつチェックする
Stringが向いている場面
- 氏名
- 住所
- メールアドレス
- 商品名
- エラーメッセージ
- ログ情報
業務システムでは、ほとんどの場合Stringを使用します。
なぜ重要なのか
charとStringを正しく使い分けることで、コンパイルエラーや想定外の動作を防ぐことができます。
例えば、1文字だけを比較したい場面でStringを使用すると、不要な処理が増えることがあります。一方、氏名や住所など複数文字のデータはStringで管理する必要があります。
初心者が混乱しやすいポイント
1文字でもStringにできる
「A」はStringです。
一方、「’A’」はcharです。
| 記述 | 型 |
|---|---|
| ‘A’ | char |
| “A” | String |
見た目は似ていますが、まったく別のデータ型です。
charは文字列ではない
charは1文字だけを表すプリミティブ型です。
Stringは文字の集まりを管理するクラスであり、扱い方が異なります。
実際のIT現場での利用例
| 業務 | 使用する型 | 理由 |
|---|---|---|
| 社員名 | String | 複数文字だから |
| 商品名 | String | 複数文字だから |
| 性別コード(M/F) | char | 1文字で管理するため |
| CSV解析 | char | 区切り文字を判定するため |
| ログ出力 | String | 文章を扱うため |
筆者が実際に経験した失敗例
新人時代、CSVファイルの区切り文字をStringで比較していたため、コードが複雑になったことがありました。
区切り文字は1文字しか扱わないため、charを利用したところ、コードがシンプルになり、読みやすさも向上しました。
業務でよくあるトラブル例
- charへ複数文字を代入してコンパイルエラーになる
- シングルクォーテーションとダブルクォーテーションを間違える
- Stringを「==」で比較して期待した結果にならない
- charとStringを混同して型エラーになる
原因の切り分け
| 確認項目 | 確認内容 |
|---|---|
| データ型 | charかStringか確認する |
| 文字数 | 1文字か複数文字か確認する |
| 囲み方 | シングルクォーテーションかダブルクォーテーションか確認する |
| 比較方法 | Stringはequals()を使用しているか確認する |
GUIで確認できる内容
- IDEのデバッグ機能
- 変数ビュー
- ウォッチ式
- ブレークポイント
変数の型と値を確認すると、charとStringの違いを把握しやすくなります。
CUI(コマンド)で確認できる内容
Javaアプリケーションでは、ログ出力やデバッグ実行を利用して変数の内容を確認できます。
ビルドやテストでは次のようなコマンドを利用することが一般的です。
- mvn test
- gradle test
- java -jar アプリケーション名.jar
確認結果の見方
- 1文字だけならcharで管理できるか確認する
- 複数文字ならStringを使用する
- コンパイルエラーが出た場合はデータ型や囲み方を確認する
初心者がやりがちなミス
- charに複数文字を代入する
- Stringをシングルクォーテーションで囲む
- charをダブルクォーテーションで囲む
- Stringの比較に「==」を使う
注意点
- charは1文字しか格納できません。
- Stringは空文字列(””)を扱えますが、charには空文字という概念はありません。
- Stringはオブジェクトなので、内容を比較するときはequals()を使用するのが基本です。
上司へ報告するポイント
- 型エラーの内容
- 発生条件
- 影響範囲
- 修正内容
- 再発防止策
エスカレーションするタイミング
- 型変更によって他機能へ影響が出る場合
- 文字コードや文字化けが関係している場合
- 設計書と実装が異なる場合
- 原因が特定できない場合
応用知識
| 項目 | char | String |
|---|---|---|
| データ型 | プリミティブ型 | クラス |
| メソッド利用 | ほとんどなし | substring()、replace()、trim()など多数 |
| 文字数取得 | 不要 | length() |
関連するIT用語
- String
- char
- プリミティブ型
- クラス
- Unicode
- ASCII
- length()
- equals()
よくある質問(FAQ)
1文字でもStringを使えますか?
はい。1文字だけの文字列として扱うことができます。ただし、1文字しか扱わないことが明確な場合はcharを使用することもあります。
charに「AB」は入りますか?
いいえ。charは1文字だけしか格納できません。
Stringとcharは自動で変換されますか?
一部の場面では変換されることもありますが、基本的には異なる型として扱われます。
業務ではどちらを使うことが多いですか?
氏名や住所、商品名、メッセージなど複数文字を扱うことが多いため、実務ではStringを使用する場面が圧倒的に多く、charは1文字だけを扱う特殊なケースで利用されます。
まとめ
文字(char)と文字列(String)は、どちらも文字を扱いますが、役割が異なります。
- charは1文字だけを扱うプリミティブ型
- Stringは文字の集まりを扱うクラス
- charはシングルクォーテーション(’ ‘)で囲む
- Stringはダブルクォーテーション(” “)で囲む
- 業務システムではStringを使う場面が多く、1文字だけを判定する場合にcharを利用する
実務では、「1文字だけ扱うのか、それとも文字列全体を扱うのか」を意識してデータ型を選ぶことが重要です。この違いを理解しておくことで、型エラーを防ぎ、読みやすく保守しやすいプログラムを書けるようになります。
