Javaの文字リテラルと文字コードを、初心者向けにやさしく
ここでは、手を動かしながら、Javaの「文字リテラル」と「文字コード」をゆっくり理解できるように説明します。
文字リテラルの基本
- 文字リテラル: たった1文字を表す値。必ずシングルクォーテーション
' 'で囲む - 型: 文字は
char型(文字列はString型。ダブルクォーテーション" "で囲む) - エラー例:
''(空)はダメ、'ab'(2文字)もダメ
char c1 = 'A'; // OK: 1文字
String s1 = "A"; // OK: 文字列(1文字でも文字列は文字列)
char c2 = 'あ'; // OK: 日本語1文字もOK
char c3 = ' '; // OK: 半角スペースも1文字
// char c4 = ''; // NG: 空文字はエラー
// char c5 = 'ab'; // NG: 2文字はエラー
Java- 違いのイメージ:
- char: 1文字だけ、箱は小さめ
- String: 文字の列、箱は長さ可変
画面に表示してみる
- printの基本:
System.out.println(値);で表示できます
char c = '花';
System.out.println(c); // 花
System.out.println("花"); // 花(こちらは文字列)
Java- コツ: 1文字を扱いたいなら
char、文章や単語ならStringを使う
文字コードって何?
- 考え方: コンピュータは文字を数字に置き換えて管理します(これが「文字コード」)
- Javaの採用: Javaの
charは Unicode(UTF-16)を使います。世界中の文字をほぼ扱えます - 対応の例:
'a'は数値 97(16進数なら 0x0061)という値に紐づいています
char a1 = 'a';
char a2 = 97; // 数値で指定しても 'a' と同じ
char a3 = 0x0061; // 16進数でもOK
System.out.println(a1); // a
System.out.println(a2); // a
System.out.println(a3); // a
Java- 注意: 数字のまま表示すると「文字」ではなく「数字」が出ます
System.out.println(97); // 97(数字)
System.out.println((char)97);// a(文字にキャスト)
Javaエスケープと特殊な書き方
- Unicodeエスケープ:
'\uXXXX'(Xは16進数)で文字を直接指定できます
System.out.println('\u0061'); // a
System.out.println('\u3042'); // あ
Java- 見えない/特殊文字: 改行やタブなどは「エスケープシーケンス」で書きます(Stringで使うことが多い)
- 改行:
'\n' - タブ:
'\t' - シングルクォート自体:
'\''(エスケープが必要) - バックスラッシュ:
'\\'
- 改行:
System.out.println("行1\n行2"); // 行1 と 行2 の間で改行される
System.out.println("A\tB"); // A と B の間にタブ
System.out.println('\''); // ' を1文字として表示
System.out.println('\\'); // \ を1文字として表示
Javaよくあるつまずきポイント
- 文字と文字列の混同:
'A'と"A"は別物。charとStringを使い分ける - 2文字を入れてしまう:
charは必ず1文字だけ - 数値をそのままprintln: 数値は文字に変換(キャスト)しないと文字にならない
- 日本語や絵文字: ほとんどOKだが、絵文字など一部は内部的に2つ分の単位(サロゲートペア)になることがあるため、厳密な文字数カウントは注意(まずは「見た目1文字でも内部的に2単位ありうる」と覚えておく程度でOK)
手を動かす例題と解説
例題1: charとStringの違いを体感
- 課題:
'A'と"A"をそれぞれ表示して違いを確認しよう
char c = 'A';
String s = "A";
System.out.println(c); // A
System.out.println(s); // A
System.out.println(s.length()); // 1(文字列の長さ)
Java- ポイント:
Stringは.length()で長さが数えられる。charは単体の値
例題2: 数値から文字へ変換
- 課題: 数値 97 を文字として表示して
'a'にできるか試そう
int code = 97;
System.out.println(code); // 97(数値)
System.out.println((char)code); // a(文字)
Java- ポイント:
(char)を付ける「キャスト」で数値→文字に変換できる
例題3: Unicodeエスケープで日本語を出す
- 課題:
'\u3042'を表示して「あ」を出力しよう
System.out.println('\u3042'); // あ
Java- ポイント: 16進数の4桁で指定する。日本語も扱える安心感!
例題4: 改行・タブを使って整える
- 課題: 表っぽく揃えて表示してみよう
System.out.println("項目\t値");
System.out.println("文字\tA");
System.out.println("コード\t97");
Java- ポイント:
\t(タブ)で見やすくなる。整形の第一歩
例題5: クイズ—これは何が表示される?
- 課題: 出力を予想してから実行してみよう
System.out.println(0x0061); // ?
System.out.println((char)0x0061); // ?
System.out.println('A' + 1); // ?
System.out.println((char)('A' + 1)); // ?
Java- 答えのヒント:
- 0x0061: 数値として表示される(97)
- (char)0x0061: ‘a’
- ‘A’ + 1: 文字コードに +1 されるので数値(66)
- (char)(‘A’ + 1): ‘B’
まとめと次の一歩
- 要点:
- charは1文字。’ ‘ で囲む
- Stringは文字の並び。” ” で囲む
- Javaの文字は数値(文字コード)と対応。数値→文字のキャストができる
- Unicodeエスケープで世界中の文字を指定可能
- 次の一歩: 文字列(
String)での操作(結合、検索、部分取り出し)や、Characterクラスの便利メソッド(大小判定・数字判定など)に進むと、コードが一気に楽しくなります。

