Java | 「文字列リテラル」の基本

Java Java
スポンサーリンク

Javaの文字列リテラルを、初心者向けにじっくり解説

最初は「文字をどう書くか」から。ここを理解すると、出力、入力、メッセージ表示、ログなどが一気に扱えるようになります。


文字列リテラルの基礎

  • 定義: 文字列リテラルは、ダブルクォーテーションで囲んだ文字の並び。
    • 例: "Hello", "こんにちは", ""(空文字)
  • 型: 文字列は String型。変数に代入して使う。
  • 1文字との違い: 'A'char型(1文字)"A"String型(文字列)
String msg = "こんにちは";
char c = 'A';     // 1文字はシングルクォート
System.out.println(msg); // こんにちは
Java

よく使う表示方法

  • 基本の出力: System.out.println(...) は改行つき、System.out.print(...) は改行なし。
System.out.println("Hello"); // Hello と表示して改行
System.out.print("Hi");      // Hi と表示して改行しない
System.out.println("!");     // ここで改行される → 結果: Hi!
Java

文字列の結合(つなげる)

  • 演算子: + で文字列同士、文字列と数値を結合できる。
  • 自動変換: 数値や真偽値も文字列に自動変換される。
String name = "山田";
int age = 20;
System.out.println("名前: " + name + ", 年齢: " + age); // 名前: 山田, 年齢: 20
Java

エスケープシーケンス(特殊文字)

  • 必要性: そのまま書けない記号や制御文字を、バックスラッシュで表現。
  • 代表例:
    • \" ダブルクォートそのもの
    • \\ バックスラッシュ
    • \n 改行
    • \t タブ
System.out.println("彼は言った: \"Javaは楽しい\""); // " を含めたい
System.out.println("C:\\Program Files\\Java");       // \ を含めたい
System.out.println("1行目\n2行目");                 // 改行
Java

便利な書き方:テキストブロック(複数行文字列)

  • 特徴: Java 15以降で使える """ ... """。複数行の文字列を見やすく書ける。
  • インデントも整えやすい。
String html = """
    <html>
      <body>
        <h1>Hello</h1>
      </body>
    </html>
    """;
System.out.println(html);
Java

よく使うメソッド

  • 長さを知る: length()
  • 中身の比較: equals(...)==ではない)
  • 部分取り出し: substring(begin, end)
  • 含まれるか: contains(...)
  • 置換: replace(old, new)
String s = "Java Programming";
System.out.println(s.length());         // 16
System.out.println(s.equals("Java"));   // false
System.out.println(s.substring(5, 16)); // "Programming"
System.out.println(s.contains("Pro"));  // true
System.out.println(s.replace("Java", "Kotlin")); // Kotlin Programming
Java

よくあるつまずきポイントと回避策

  • ” と ‘ の混同:
    • 文字列は "1文字は '。間違うとコンパイルエラー。
  • == で文字列比較しない:
    • == は参照比較。中身の比較は equals(...) を使う。
  • null の扱い:
    • 変数が null のまま length() などを呼ぶと NullPointerException
    • 先に s != null を確認するか、初期化しておく。
String a = "abc";
String b = new String("abc");
System.out.println(a == b);        // false の可能性あり(参照が違う)
System.out.println(a.equals(b));   // true(中身が同じ)
Java

書式付き出力(きれいに整える)

  • printf: 変数を決まった形で出力。%s(文字列)、%d(整数)、%f(小数)など。
String name = "田中";
int score = 95;
double rate = 0.875;
System.out.printf("名前: %s, 点数: %d, 率: %.2f%n", name, score, rate);
// → 名前: 田中, 点数: 95, 率: 0.88
Java

例題で練習

例題1:自己紹介文を作る

  • 課題: 名前、年齢、趣味を変数に入れて、1行の自己紹介を出力。
public class Intro {
    public static void main(String[] args) {
        String name = "鈴木";
        int age = 23;
        String hobby = "読書";

        String intro = "はじめまして、" + name + "です。年齢は" + age + "歳、趣味は" + hobby + "です。";
        System.out.println(intro);
    }
}
Java

例題2:引用符を含むメッセージ

  • 課題: 画面に 「彼は “Java” が好きと言った。」 をそのまま表示。
public class Quote {
    public static void main(String[] args) {
        System.out.println("彼は \"Java\" が好きと言った。");
    }
}
Java

例題3:複数行メニューを整える

  • 課題: テキストブロックでメニューを表示。
public class Menu {
    public static void main(String[] args) {
        String menu = """
            === メニュー ===
            1. 新規作成
            2. 開く
            3. 保存
            0. 終了
            """;
        System.out.println(menu);
    }
}
Java

例題4:安全な比較(null考慮)

  • 課題: 入力がない場合(null)のときに落ちない比較。
public class SafeEquals {
    public static void main(String[] args) {
        String target = "OK";
        String input = null;

        boolean match = "OK".equals(input); // 左側をリテラルにすると null でも安全
        System.out.println(match); // false
    }
}
Java

例題5:部分一致でフィルタ

  • 課題: リストから「Java」を含む要素だけ表示。
import java.util.List;

public class Filter {
    public static void main(String[] args) {
        List<String> items = List.of("Java入門", "Python基礎", "Java応用", "C言語");
        for (String item : items) {
            if (item.contains("Java")) {
                System.out.println(item);
            }
        }
    }
}
Java

ミニチェック(理解度テスト)

  • Q1:"A"'A' の違いは?
    • 答え: "A" は String(文字列)、'A' は char(1文字)。
  • Q2: 文字列の中身が同じかどうかを調べるには?
    • 答え: equals(...) を使う(==ではない)。
  • Q3: 改行したいときに入れるものは?
    • 答え: \n(エスケープシーケンス)。

次のステップ(もっと使いこなす)

  • 文字コード・Unicode: 絵文字や多言語文字の扱い。codePointAt など。
  • StringとStringBuilder: たくさん結合するなら StringBuilder が効率的。
  • 正規表現: matches, replaceAll で複雑なパターン処理。
タイトルとURLをコピーしました