0Pricing
Java Academy · 강의

텍스트 블록과 String.format

텍스트 블록으로 여러 줄 문자열을 작성하고 String.format 형식으로 데이터를 서식화합니다.

텍스트 블록과 String.format은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

텍스트 블록과 String.format

텍스트 블록(Java 15 이상)을 사용하면 이스케이프 없이 여러 줄의 문자열 리터럴을 작성할 수 있습니다. String.format 및 formatted()와 함께 사용하면 복잡한 문자열 출력을 깔끔하고 읽기 쉽게 만들 수 있습니다.

텍스트 블록이란?

텍스트 블록은 세 개의 큰따옴표로 묶인 문자열 리터럴입니다("""). 줄 바꿈과 들여쓰기를 자동으로 보존하므로 여러 줄 콘텐츠에서 이스케이프 시퀀스를 사용할 필요가 없습니다.

// 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);

들여쓰기 처리

텍스트 블록은 공통된 앞쪽 공백을 자동으로 제거합니다. 닫는 """의 위치가 들여쓰기를 제어합니다.

// 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"
// }

포함된 큰따옴표

텍스트 블록에서는 연속된 큰따옴표 세 개가 나타나지 않는 한 이스케이프 없이 큰따옴표를 포함할 수 있습니다. 하나의 "와 두 개의 ""는 문제없이 사용할 수 있습니다.

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

JSON 템플릿을 위한 텍스트 블록

텍스트 블록은 테스트나 구성에 사용되는 JSON, HTML, XML 및 SQL 템플릿에 특히 유용합니다.

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()

텍스트 블록을 formatted()(Java 15 이상)와 결합하면 매개변수를 사용하는 템플릿을 만들 수 있습니다.

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

텍스트 블록의 이스케이프 시퀀스

텍스트 블록은 \n, \t, Java 14부터 지원되는 \(줄 연속) 및 \s(뒤쪽 공백 보존)를 지원합니다.

// \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.

String.format 참조

String.format의 주요 형식 지정자:

  • %s — String
  • %d — 정수
  • %f — 부동 소수점
  • %.2f — 소수점 이하 2자리
  • %n — 플랫폼의 줄 바꿈
  • %x — 16진수
  • %10d — 10자리 너비에서 오른쪽 정렬
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와 translateEscapes

두 String 메서드는 텍스트 블록과 함께 작동합니다. stripIndent()는 공통된 앞쪽 공백을 제거하고, translateEscapes()는 실행 중인 문자열의 이스케이프 시퀀스를 처리합니다.

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

실전: HTML 이메일 템플릿

텍스트 블록을 사용하여 매개변수를 적용할 수 있는 HTML 이메일 템플릿을 만듭니다.

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"));

텍스트 블록과 String.join

항목 목록에는 String.join이나 Collectors.joining이 텍스트 블록보다 유연합니다. 고정된 여러 줄 콘텐츠에는 텍스트 블록을 사용하고, 동적인 목록에는 join을 사용합니다.

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);

빠른 확인

텍스트 블록에서 닫는 """의 위치는 무엇을 제어합니까?

복습: 텍스트 블록과 String.format

핵심 요점:

  • 텍스트 블록(Java 15 이상)은 세 개의 큰따옴표를 사용하며 이스케이프 없이 여러 줄 구조를 보존합니다
  • 닫는 \"\"\"의 위치를 기준으로 공통된 앞쪽 공백이 자동으로 제거됩니다
  • 텍스트 블록 안의 큰따옴표는 이스케이프할 필요가 없습니다
  • 매개변수를 사용하는 템플릿에는 텍스트 블록에서 .formatted()를 사용합니다
  • String.format 지정자: %s, %d, %.2f, %n, %x, 너비 및 정렬 플래그
  • 줄 끝의 뒤쪽 공백을 보존하려면 줄 끝에 \s를 사용하고, 줄을 연결하려면 줄 끝에 \를 사용합니다

자주 묻는 질문

“텍스트 블록과 String.format” 강의는 무료인가요?

네 — “텍스트 블록과 String.format” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“텍스트 블록과 String.format”에서 뭘 배우나요?

텍스트 블록으로 여러 줄 문자열을 작성하고 String.format 형식으로 데이터를 서식화합니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“텍스트 블록과 String.format” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 문자열 불변성과 문자열 풀
  2. 효율적인 연결을 위한 StringBuilder
  3. 텍스트 블록과 String.format
  4. Pattern과 Matcher를 사용한 정규 표현식
← Java Academy(으)로 돌아가기