Java | 「文字リテラル」と「文字コード」

Java Java
スポンサーリンク

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" は別物。charString を使い分ける
  • 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 クラスの便利メソッド(大小判定・数字判定など)に進むと、コードが一気に楽しくなります。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました