Javaの「文字」と「文字列」の違いをやさしく解説!混同に注意!

こんにちは。ゆうせいです。

今回は新人エンジニアがつまずきがちな「文字」と「文字列」の違いについて、丁寧に説明します。同じ「あ」と表示されても、charStringはまったく別物です!


文字(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

このように、Stringcharの配列から作ることもできるんです。


Stringクラスの正体に迫る!

JavaのStringクラスの中身を見てみると、以下のように宣言されています。

private final char value[];

これは、「Stringオブジェクトの中では、文字はchar型の配列(char[])で管理されている」という意味です。

「文字列 = 文字の配列」というイメージをしっかり持ちましょう!


どうして混同しやすいの?

新人エンジニアが混同する理由としては、

  • 表示結果が同じに見える('あ' と "あ" どちらも「あ」と表示される)
  • 名前が似ている(char / String)
  • どちらも「文字っぽい」扱いに見える

が挙げられます。

しかし、内部的には次のようにまったく異なります。

特性charString
データ構造単体の文字複数の文字(charの配列)
型の分類プリミティブ型参照型(オブジェクト)
記法'A'(シングルクォート)"ABC"(ダブルクォート)
文字数常に1文字0文字以上(空文字もOK)
メモリ構造値そのものを持つ値が格納されたメモリの参照を持つ

stringは「糸」?語源でイメージを深めよう

英語のstringは「糸」や「ひも」という意味を持ちます。

つまり、Stringとは複数の文字を「糸」でつないだものと捉えると、非常にイメージしやすくなります!

真珠のネックレスのように、文字が並んでいるのがStringです。


まとめ:charとStringの違いはこう理解しよう!

観点charString
使い方単一の文字を扱う複数の文字をまとめて扱う
記述法'あ', 'A'"あ", "Hello"
型の種類プリミティブ型参照型(オブジェクト)
内部構造文字コード1つchar[](文字の配列)

今後の学習の指針

次のステップとしては、以下のような内容に進むとよいでしょう。

  • 文字列の操作(連結、長さ取得、部分文字列抽出など)
  • StringBuilderとの違いと使い分け
  • 文字コードとエンコーディングの基礎

また、IDE(統合開発環境)を使って、実際のJava標準APIの中身を見てみるのもおすすめです。Stringクラスの定義を読むだけでも、理解がグッと深まります!

自信を持って「charとStringは違う!」と説明できるように、ぜひ手を動かして確認してみてください!


セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。