Javaの「文字」と「文字列」の違いをやさしく解説!混同に注意!
こんにちは。ゆうせいです。
今回は新人エンジニアがつまずきがちな「文字」と「文字列」の違いについて、丁寧に説明します。同じ「あ」と表示されても、char
とString
はまったく別物です!
文字(char型)と文字列(String型)の違いとは?
まずはサンプルコードで確認
public class Example01 {
public static void main(String[] args) {
char c1 = 'あ';
String str1 = "あ";
System.out.println(c1); // 出力: あ
System.out.println(str1); // 出力: あ
}
}
見た目の出力結果は同じでも、内部的な扱いは大きく異なります。
型 | 内容 | 分類 |
---|---|---|
char | 文字1つ(1文字) | プリミティブ型(基本型) |
String | 文字の集まり(0文字以上) | 参照型(オブジェクト) |
例えで説明すると…
char
は「1文字」を持つ紙のカードString
は「複数の文字カードを束ねたひも付き名札」のようなもの
実験:文字を数値として扱ってみる
public class Example02 {
public static void main(String[] args) {
char c1 = 'あ';
int a = c1;
System.out.println(a);
}
}
実行結果
12354
これは「文字 'あ' のUTF-16における数値表現(文字コード)」です。
文字コードとは?
コンピュータは文字を直接扱えません。そのため、すべての文字に数値を割り当てて処理しています。これが文字コードです。
Javaでは基本的にUTF-16(16ビットのUnicode)が使われています。
実験:文字列は文字の配列だった!
public class Example03 {
public static void main(String[] args) {
char[] charArray = { 'H', 'e', 'l', 'l', 'o' };
String str = new String(charArray);
System.out.println(str);
}
}
実行結果
Hello
このように、String
はcharの配列から作ることもできるんです。
Stringクラスの正体に迫る!
JavaのString
クラスの中身を見てみると、以下のように宣言されています。
private final char value[];
これは、「Stringオブジェクトの中では、文字はchar型の配列(char[]
)で管理されている」という意味です。
「文字列 = 文字の配列」というイメージをしっかり持ちましょう!
どうして混同しやすいの?
新人エンジニアが混同する理由としては、
- 表示結果が同じに見える('あ' と "あ" どちらも「あ」と表示される)
- 名前が似ている(char / String)
- どちらも「文字っぽい」扱いに見える
が挙げられます。
しかし、内部的には次のようにまったく異なります。
特性 | char | String |
---|---|---|
データ構造 | 単体の文字 | 複数の文字(charの配列) |
型の分類 | プリミティブ型 | 参照型(オブジェクト) |
記法 | 'A' (シングルクォート) | "ABC" (ダブルクォート) |
文字数 | 常に1文字 | 0文字以上(空文字もOK) |
メモリ構造 | 値そのものを持つ | 値が格納されたメモリの参照を持つ |
stringは「糸」?語源でイメージを深めよう
英語のstring
は「糸」や「ひも」という意味を持ちます。
つまり、String
とは複数の文字を「糸」でつないだものと捉えると、非常にイメージしやすくなります!
真珠のネックレスのように、文字が並んでいるのが
String
です。
まとめ:charとStringの違いはこう理解しよう!
観点 | char | String |
---|---|---|
使い方 | 単一の文字を扱う | 複数の文字をまとめて扱う |
記述法 | 'あ' , 'A' | "あ" , "Hello" |
型の種類 | プリミティブ型 | 参照型(オブジェクト) |
内部構造 | 文字コード1つ | char[] (文字の配列) |
今後の学習の指針
次のステップとしては、以下のような内容に進むとよいでしょう。
- 文字列の操作(連結、長さ取得、部分文字列抽出など)
- StringBuilderとの違いと使い分け
- 文字コードとエンコーディングの基礎
また、IDE(統合開発環境)を使って、実際のJava標準APIの中身を見てみるのもおすすめです。String
クラスの定義を読むだけでも、理解がグッと深まります!
自信を持って「charとStringは違う!」と説明できるように、ぜひ手を動かして確認してみてください!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年6月7日参照型の配列とNullPointerException
山崎講師2025年6月7日Javaでchar型は実は整数!?文字コードの正体に迫る!
山崎講師2025年6月7日Javaのエスケープシーケンスをマスターしよう!表示のズレに困ったらこれ!
山崎講師2025年6月7日Javaの「文字」と「文字列」の違いをやさしく解説!混同に注意!