텍스트 블록과 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 blockJSON 템플릿을 위한 텍스트 블록
텍스트 블록은 테스트나 구성에 사용되는 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 문자열 불변성과 문자열 풀
- 효율적인 연결을 위한 StringBuilder
- 텍스트 블록과 String.format
- Pattern과 Matcher를 사용한 정규 표현식