System.out.println("Java学習中");

【Java / Spring Boot】UI/UXの視点を活かしたバックエンド開発の学習ポートフォリオ

【Java Silver対策】テキストブロック(""")の中で「\"」と書いたらどうなるか?

🟢 はじめに

Java 15から正式に導入された、超便利な「テキストブロック""")」。

複数行の文章を、見たまんまの形変数に入れられる「魔法の箱」のような機能です。

今回は、Java Silverの学習中につい引っかかりそうになる「テキストブロックの中でのダブルクォーテーション")の扱い」について、RPG風の例え話で分かりやすく解説します!⚔️


🛡️ 通常の文字列(")とテキストブロック(""")の違い

RPGゲームで、勇者がカッコいいセリフを言うシーンを作ってみましょう。

まずは昔ながらの書き方通常の文字列)です。

// 従来の書き方(1行の文字列)
String heroQuote = "勇者は言った。\"この「伝説の剣」で、世界を救う!\"と。";
System.out.println(heroQuote);

通常の文字列")の世界では、文の途中で " を使いたい場合、「エスケープ処理\)」という特別な魔法の盾を装備させないといけません。

装備させないと、Javaが「あ、ここでセリフ終了ね!」と勘違いして、コンパイルエラーを引き起こしてしまうからです😱


🏰 テキストブロックという名の「無敵の結界」

ところが、テキストブロック""")を使うと、この常識が変わります。

// テキストブロックを使った書き方
String textBlockQuote = """
        勇者は言った。
        "この「伝説の剣」で、世界を救う!"と。
        """;
System.out.println(textBlockQuote);

中の " に、エスケープ\ がついていません!✨

テキストブロック""")は、いわば「無敵の魔法結界」です。

結界の中では、ダブルクォーテーション " はそのまま書いても「ただの文字」として安全に守られます。

わざわざ \ という重たい盾を装備させる必要がなくなります。

スッキリして読みやすいですよね!


🤔 じゃあ、結界の中で「盾(\)」を装備したらどうなるの?

ここで一つの疑問が浮かびます。

必要ないのは分かったけど、もしテキストブロックの中で、あえて昔のように \" と書いたらエラーになるの?」

実は、Java Silverの試験などでは、ここを突いた意地悪な(?)問題が出ることがあると言われています。

さっそく見てみましょう。

// テキストブロックの中で、あえてエスケープしてみる
String textBlockEscaped = """
        勇者は言った。
        \"この「伝説の剣」で、世界を救う!\"と。
        """;
System.out.println(textBlockEscaped);

結果はどうなるかというと……エラーにはなりません

普通に " として出力されます! 🎉


👼 Javaの優しさ(まとめ)

無敵の結界テキストブロック)の中では、本来 \エスケープの盾)は必要ありません。

でも、もしあなたが「心配だから盾も装備しておこう……」と \" と書いたとしても、Javaはこう言ってくれます。

あ、結界の中だからその盾いらないんだけどね。でも、キミがそう書きたいなら、ちゃんと"のことだって分かってるから大丈夫だよそのまま進みたまえ!」

エラーにして弾くのではなく、優しく受け入れてくれます😭✨

今日のまとめ

テキストブロック""")の中では、" はそのまま書ける!(エスケープ不要

でも、あえて \" と書いても、Javaは「はいはい、" のことね」と優しく受け入れてくれる!(エラーにはならない

この「Javaの優しさ」を知っていれば、試験の引っかけ問題にも自信を持って立ち向かえますね!

同じように『テキストブロック(""")の中で「\"」って書いたらどうなるの?🤔』と悩んでいる方の参考になれば幸いです🙌


【プロフィール・作品置き場】

kenichikamoi.com


🎵 Youtube(楽曲一覧)はこちら

www.youtube.com