【Java】文字型(char)と文字列(String)の違いを解説!使い分けのコツとは?
はじめに
みなさんどうも、おげんです。
「整数」「小数」と、これまでJavaの「数値」を扱う型についてお話ししてきました。
数値の扱いが分かってくると、次にやりたくなるのが「名前」や「メッセージ」といった「文字」の扱いですよね。
Javaで文字を扱うには、主に char と String の2種類があります。
「どっちも文字を扱うなら、どっちを使っても同じじゃないの?」
独学を始めたばかりの頃の私は、正直そう思っていました。
でも、いざコードを書いてみると、シングルクォート( ‘ )とダブルクォート( ” )を使い分けないといけなかったり、エラーが出たり……。
実はここにも、Javaならではの「厳格なルール」が隠されています。
今回は、意外と間違いやすい「文字」と「文字列」の違いについて、実体験を交えながら丁寧に紐解いていこうと思います。
- charとString、どっちで文字を書けばいいか迷っている人
- シングルクォート( ‘ )とダブルクォート( ” )の使い分けで混乱している人
- 「1+1が11になった!?」と、文字列の計算結果に驚いている人
- String型だけなぜ大文字で始まるのか、その理由が気になっている人
char と String の違い
文字を扱う型には、char(文字型) と String(文字列型) があります。
当時の私は「どっちも文字だし、全部Stringでいいじゃん!」と思っていました(笑)。
でも、Java君は「一文字なのか、それとも言葉(文章)なのか」を厳格に区別したがる性格なんです。
まずは、この2つの違いをパッと見で確認してみましょう。
| 特徴 | char(文字型) | String(文字列型) |
| 扱える量 | たった1文字だけ | 0文字以上(文章でもOK) |
| 囲い方 | シングルクォート( ‘ ) | ダブルクォート( ” ) |
| 書き出し | 小文字(char) | 大文字(String) |
| 正体 | 基本データ型(仲間) | 参照型(特別なクラス) |
「1文字」か「それ以外」か
一番の違いは、そのボリュームです。
char は、アルファベットの「A」や数字の「1」など、たった1文字を扱うための型です。
対して String は、「Hello」や「おげん」のように、複数の文字が繋がったもの(文字列)を扱います。
大文字で始まる String の秘密
表を見て気づいた方もいるかもしれませんが、String だけ始まりが大文字ですよね。
int や double 、そして char はすべて小文字から始まります。
これらは「基本データ型」といって、Javaが最初から用意しているシンプルな仲間たちです。
それに対して String は、実はJavaが用意した「クラス(設計図)」というちょっと特別な存在なんです。
今は「Stringだけはちょっとエリートで、できることが多いんだな」くらいに思っておけばOKです!
【重要】囲い方を間違えると怒られる
Javaで文字を扱うとき、一番気をつけなければいけないのが「囲い方」です。
「どっちでもいいじゃん!」と思いたくなりますが、これを間違えるとJava君は途端に機嫌を損ねて、コンパイルエラーを投げつけてきます。
charはシングル( ‘ )
char を使うときは、必ずシングルクォート( ‘ )で囲みます。
char grade = 'A'; // ✅ 正解
char wrong = "A"; // ❌ エラー!2行目のようにダブルクォートで囲ってしまうと、Javaは「あ、これはString(文字列)だな」と判断します。それを「char型」という小さな箱に入れようとするので、「型が違うよ!」と怒られてしまうんです。
Stringはダブル( ” )
逆に、String を使うときは必ずダブルクォート( ” )で囲みます。
String name = "おげん"; // ✅ 正解
String initial = 'A'; // ❌ エラー!たとえ1文字だけであっても、String型として扱うならダブルクォートでなければなりません。
独学時代の私がハマった「空(から)」の罠
さらに細かいのですが、私が「えー!」となったのがこれです。
String s = "";(中身が何もないダブルクォートはOK)char c = '';(中身が何もないシングルクォートはNG!エラー!)
char は「絶対に1文字入れなきゃダメ!」という頑固な性格なんです(笑)。
こうした細かい違いに、当時の私は何度も「Java君、厳しすぎない……?」と泣かされました。
文字列の「足し算」の不思議
これまでの記事で「数値の計算」をやってきましたが、実は文字列(String)でも +(プラス) を使うことができます。
ただ、数値の時と同じ感覚で使うと、ちょっと不思議なことが起こります。
「1 + 1」が「11」になる!?
例えば、こんなコードを書いてみたとします。
System.out.println("1" + "1");普通の計算なら答えは「2」ですが、Javaが出す結果は……
11「えっ、計算ミス!?」と思いますよね(笑)。
でも、これは間違いではありません。Javaにとって、ダブルクォートで囲まれたものはあくまで「文字」です。
文字列同士の + は、足し算ではなく「連結(くっつけること)」を意味します。
「1」という文字と「1」という文字をペタッと繋げた結果、11に見える文字列ができあがった……というわけです。
数値と文字列を混ぜるとどうなる?
さらに面白いのが、数値と文字列を混ぜて足した時です。
System.out.println("私の年齢は" + 20 + "歳です");この場合、Java君は気を利かせて、数値の「20」を自動的に文字列に変換して繋げてくれます。
私の年齢は20歳ですこのように、+ を使うことで、変数に入れた名前や数値を文章の中に組み込むことができます。
これは実際の開発でもめちゃくちゃよく使うテクニックなので、ぜひ覚えておいてくださいね!
まとめ:型を使い分けて言葉を操ろう
今回はJavaの「文字(char)」と「文字列(String)」について解説しました。 最後に、大事なポイントを振り返ってみましょう。
- 1文字だけなら
char、言葉や文章ならStringを使う charはシングル( ‘ )、Stringはダブル( ” )で囲むのが鉄則!Stringだけは大文字スタートの「特別な存在(クラス)」- 文字列の
+は「足し算」ではなく「連結(くっつける)」という意味になる
これで、Javaのプログラミングで最もよく使う「数値」と「文字」の型をマスターしました!
独学を始めたばかりの頃の私は、「型なんてどれでもいいじゃん」と思っていました。
でも、こうして一つずつ紐解いてみると、Java君がデータの種類を厳格に分けているのは、「プログラムが正しく、安全に動くため」なんだと気づくことができました。
「整数」「小数」「文字」と、基本データ型の三部作はこれで完結です。
基礎を固めていけば、今は難しく見えるコードも、いつか必ず自分の言葉のように読み書きできるようになります。
4月からエンジニアとしての一歩を踏み出す私も、この基礎を忘れずに積み上げていこうと思います。皆さんも、エラーが出ても焦らずに「型」をチェックしてみてくださいね。
次は、プログラムの「分かれ道」を作るための 真偽値(boolean) についてお話ししようかなと考えています。
一緒に頑張りましょう!




