
🟢 はじめに
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の優しさ」を知っていれば、試験の引っかけ問題にも自信を持って立ち向かえますね!
同じように『テキストブロック(""")の中で「\"」って書いたらどうなるの?🤔』と悩んでいる方の参考になれば幸いです🙌