0Pricing
Java Academy · Lezione

Text block e String.format

Scriva stringhe su più righe con i text block e formatti i dati con i pattern di String.format.

Text block e String.format è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.

Text block e String.format

I text block (Java 15+) consentono di usare letterali String multilinea senza caratteri di escape. Insieme a String.format e formatted(), rendono l'output complesso chiaro e leggibile.

Che cosa sono i text block

Un text block è un letterale String racchiuso tra triple virgolette doppie """. Mantiene automaticamente i caratteri di nuova riga e l'indentazione, eliminando le sequenze di escape per i contenuti multilinea.

// Traditional multi-line string
String old = "SELECT id, name, email\n" +
             "FROM users\n" +
             "WHERE active = true\n" +
             "ORDER BY name;";

// Text block (Java 15+) — much cleaner
String sql = """
    SELECT id, name, email
    FROM users
    WHERE active = true
    ORDER BY name;
    """;

System.out.println(sql);

Gestione dell'indentazione

I text block rimuovono automaticamente gli spazi bianchi iniziali comuni. La posizione delle """ di chiusura controlla l'indentazione.

// Leading spaces up to the closing """ are stripped
String json = """
        {
            "name": "Alice",
            "role": "admin"
        }
        """;
// Output has no leading spaces (stripped by common indent)
System.out.println(json);
// {
//     "name": "Alice",
//     "role": "admin"
// }

Virgolette incorporate

I text block possono contenere virgolette doppie senza caratteri di escape, purché non compaiano tre virgolette consecutive. Una singola " o una coppia "" sono valide.

String html = """
    <div class="container">
        <p class="title">Hello, World!</p>
        <a href="https://example.com">Click here</a>
    </div>
    """;
System.out.println(html);
// Note: no need to escape " inside the block

Text block per i template JSON

I text block sono particolarmente utili per i template JSON, HTML, XML e SQL usati nei test o nella configurazione.

String request = """
    {
        "email": "alice@example.com",
        "password": "secret123",
        "plan": "PRO"
    }
    """;

// In tests: compare expected JSON
String expected = """
    {
      "status": "created",
      "id": 42
    }
    """;
// Perfect for MockMvc test assertions
System.out.println(request);

formatted() con i text block

Combini i text block con formatted() (Java 15+) per creare template parametrizzati.

String name = "Alice";
long orderId = 1234L;
double total = 149.99;

String email = """
    Dear %s,

    Your order #%d has been confirmed.
    Total charged: $%.2f

    Thank you for shopping with us!
    """.formatted(name, orderId, total);

System.out.println(email);
// Dear Alice,
// Your order #1234 has been confirmed.
// Total charged: $149.99

Sequenze di escape nei text block

I text block supportano \n, \t e \ di Java 14+ (continuazione di riga) e \s (mantiene gli spazi bianchi finali).

// \s forces a space (preserves trailing whitespace on line)
String padded = """
    line one  \s
    line two   \s
    """;

// \ (backslash at end of line) joins lines in source but keeps them as one
String poem = """
    Roses are red, \
    violets are blue.
    """;
System.out.println(poem); // Roses are red, violets are blue.

Riferimento a String.format

Specificatori di formato principali per String.format:

  • %s — String
  • %d — intero
  • %f — numero in virgola mobile
  • %.2f — 2 cifre decimali
  • %n — carattere di nuova riga della piattaforma
  • %x — esadecimale
  • %10d — allineamento a destra in 10 caratteri
System.out.printf("%s | %d | %.2f | %X%n", "Item", 42, 9.99, 255);
// Item | 42 | 9.99 | FF

String formatted = String.format("%-20s %6.2f%n", "Mechanical Keyboard", 129.95);
System.out.print(formatted);
// Mechanical Keyboard 129.95

// Named format with text block
System.out.printf("""
    Order: %s
    Total: $%.2f
    Status: %s%n""", "ORD-001", 99.99, "SHIPPED");

stripIndent e translateEscapes nei text block

Due metodi di String funzionano con i text block: stripIndent() rimuove gli spazi bianchi iniziali comuni, mentre translateEscapes() elabora le sequenze di escape in una stringa durante l'esecuzione.

String raw = "  hello\\n  world";
System.out.println(raw);                    // hello\n  world
System.out.println(raw.translateEscapes()); // hello (newline) world

// stripIndent removes common leading whitespace
String indented = "    line 1\n    line 2\n    line 3";
System.out.println(indented.stripIndent()); // line 1\nline 2\nline 3

Pratica: template per un'email HTML

Creare un template parametrizzato per un'email HTML con un text block.

static String buildWelcomeEmail(String name, String activationLink) {
    return """
        <!DOCTYPE html>
        <html>
          <body>
            <h1>Welcome, %s!</h1>
            <p>Click the link below to activate your account:</p>
            <a href="%s">Activate Account</a>
          </body>
        </html>
        """.formatted(name, activationLink);
}

System.out.println(buildWelcomeEmail("Alice",
    "https://app.example.com/activate?token=abc123"));

Text block rispetto a String.join

Per gli elenchi di elementi, String.join o Collectors.joining sono più flessibili di un text block. Utilizzi i text block per contenuti multilinea fissi e join per gli elenchi dinamici.

import java.util.*;
import java.util.stream.*;

List<String> features = List.of("Unlimited storage", "Priority support", "AI assistant");

// Dynamic list: join
String bullet = features.stream()
    .map(f -> "  • " + f)
    .collect(Collectors.joining("\n"));
System.out.println(bullet);
// • Unlimited storage
// • Priority support
// • AI assistant

// Fixed template: text block + formatted
String plan = """
    PRO Plan — $29/month
    Features:
    %s
    """.formatted(bullet);
System.out.println(plan);

Verifica rapida

Che cosa controlla la posizione delle """ di chiusura in un text block?

Riepilogo: text block e String.format

Punti chiave:

  • I text block (Java 15+) utilizzano triple virgolette e mantengono la struttura multilinea senza caratteri di escape
  • Gli spazi bianchi iniziali comuni vengono rimossi automaticamente in base alla posizione delle \"\"\" di chiusura
  • Le virgolette doppie all'interno dei text block non richiedono caratteri di escape
  • Utilizzi .formatted() su un text block per creare template parametrizzati
  • Specificatori di String.format: %s, %d, %.2f, %n, %x, flag di larghezza/allineamento
  • Utilizzi \s alla fine della riga per mantenere gli spazi finali; utilizzi \ alla fine della riga per unire le righe

Domande Frequenti

La lezione «Text block e String.format» è gratuita?

Sì — il testo completo di «Text block e String.format» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.

Cosa imparerò in «Text block e String.format»?

Scriva stringhe su più righe con i text block e formatti i dati con i pattern di String.format. Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Java Academy?

Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Text block e String.format»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Java Academy?

Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Immutabilità di String e string pool
  2. StringBuilder per concatenazioni efficienti
  3. Text block e String.format
  4. Espressioni regolari con Pattern e Matcher
← Torna a Java Academy