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

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

【Java Silver対策】「テキストブロック(""")」について

🟢 はじめに

Javaで複数行の文章(HTMLJSONなど)を書こうとして、「+\n ばかりでコードが読みにくい…😫」と悩んだことはありませんか?

Java15から正式に導入された「テキストブロックText Blocks)」を使えば、そんな悩みは一発で解決します!

今回は、テキストブロックを「改行やスペースをそのまま保存できる段ボール箱📦」に例えて、初心者の方にも分かりやすく解説します。

JavaSilver対策としても重要なポイントだと言われていますので、ぜひ最後まで読んでみてくださいね!


🤔 テキストブロックってなに?

テキストブロックは、"""3つのダブルクォーテーション)で囲むことで、複数行の文字列をそのままスッキリ書ける機能です。

百聞は一見に如かず。

従来の書き方と見比べてみましょう!

今回は、簡単なHTMLのリストを作るコードで比較します。

❌ 従来の書き方(小さなメモ帳と、のり付け)

public class Main {
    public static void main(String[] args) {
        // メモ帳の切れ端を、+(のり)と \n(改行記号)で無理やり繋ぐイメージ…
        String oldWay = "<ul>\n" +
                        "    <li>Java</li>\n" +
                        "    <li>JavaScript</li>\n" +
                        "</ul>\n";
        
        System.out.println(oldWay);
    }
}

書くのも大変ですし、後から直す時に記号を消してしまってエラーになりがちですよね。

⭕️ テキストブロック(魔法の段ボール箱📦)

public class Main {
    public static void main(String[] args) {
        // """ という大きな箱に、そのままポン!と入れるだけ!
        String newWay = """
                <ul>
                    <li>Java</li>
                    <li>JavaScript</li>
                </ul>
                """;
                
        System.out.println(newWay);
    }
}

とてもスッキリしましたね✨

+\n を使わなくても、箱の中に入れた改行字下げインデント)がそのままの形で出力されます。


✅ テキストブロックの「3つの絶対ルール」

テキストブロックには、知っておくべき大事なルールがあります。

特にJavaSilverでは頻出のポイントだと言われています!

ルール①:フタを開けたら、必ず改行する

""" で箱のフタを開けたら、その行には何も文字を書いてはいけません。

すぐにエンターキー改行)を押すのがルールです。

// 🚨 コンパイルエラー!フタを開けてすぐ文字を詰め込んではダメ!
// String error = """<ul><li>Java</li></ul>""";

// ✅ 正解!フタを開けたら、次の行から書き始める
String ok = """
        <ul><li>Java</li></ul>""";

ルール②:賢いお掃除機能(自動インデント調整)

テキストブロックは、コードの見た目を綺麗にするための「左側の無駄な余白」を、自動的にハサミで切り取ってくれる賢い機能を持っています。

切り取る基準となるのは、「一番左に出っ張っている文字」か「閉じる """」のどちらかです。

// パターンA:閉じる """ を文字と揃える(余白ゼロ)
String patternA = """
        <p>Hello</p>
        """; 
        // -> 出力結果は左にピッタリ寄ります。

// パターンB:閉じる """ を少し左に置く(余白を残す)
String patternB = """
            <p>Hello</p>
        """; 
        // -> 閉じる """ の位置が基準になるので、<p>の前に少しスペース(字下げ)が残ります!

見た目は同じように見えても、箱を閉じる位置によって出力される結果が変わります。

ルール③:特殊な記号(エスケープシーケンス)の活用🪄

どうしても行末のスペースを残したい!」「長すぎるからコード上では改行するけど、出力結果は1行にしたい!」というワガママを叶える便利な道具があります。

\s(スペースの保護): 通常、行の右側にある無駄なスペースは自動で消去されますが、\s を置くと「このスペースは大事だから残して!」とJavaに伝えることができます。

\接着剤): 行の終わり\ を置くと、その部分の改行がキャンセルされ、下の行とピタッとくっついて1行として出力されます。

String text = """
        吾輩は猫である。\
        名前はまだ無い。\s
        """;
// 出力結果:「吾輩は猫である。名前はまだ無い。 (ここにスペースが残る)」

✍️ まとめ

テキストブロック""")のおかげで、HTMLJSONSQLなどの長い文字列をJavaの中に書くのが劇的にラクになりました。

""" で囲むと、改行インデントがそのまま保持される📦

開始の """ の後は、必ず改行する!

閉じる """ の位置で、左側の余白インデント)が決まる

JavaSilverの試験では、「エラーになる書き方」や「どこまで余白が切り取られるか」が引っかけ問題としてよく出題されると言われています。

同じように「テキストブロック"""って何?🤯」と悩んでいる方の参考になれば幸いです🙌


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

kenichikamoi.com


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

www.youtube.com