PHpullh
학습 라이브러리/Java/String & StringBuilder & Text Block

JAVA · 기초 문법

String & StringBuilder & Text Block

Java의 불변 String, 가변 StringBuilder, 그리고 Java 15+의 Text Block을 완전히 마스터합니다.

기초 문법입문StringStringBuilderText Blockequalsstrip

핵심 설명

Java의 불변 String, 가변 StringBuilder, 그리고 Java 15+의 Text Block을 완전히 마스터합니다.

Java code

public class Strings {
    public static void main(String[] args) {
        // String — 불변 (immutable)
        String s1 = "Hello";
        String s2 = "Hello";
        String s3 = new String("Hello");

        System.out.println(s1 == s2);        // true (intern pool)
        System.out.println(s1 == s3);        // false (new 객체)
        System.out.println(s1.equals(s3));   // true

        // 주요 메서드
        String str = "  Java Programming  ";
        System.out.println(str.trim());
        System.out.println(str.strip());      // Unicode 공백 처리
        System.out.println(str.toUpperCase());
        System.out.println("hello".contains("ell")); // true
        System.out.println("a,b,c".split(",").length); // 3
        System.out.println(String.join("-", "a","b","c")); // a-b-c
        System.out.println("abc".repeat(3));   // abcabcabc
        System.out.println("".isBlank());      // true (Java 11+)
        System.out.println("  ".isBlank());    // true

        // StringBuilder — 가변, 효율적인 문자열 조합
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 5; i++) {
            sb.append("item").append(i).append(", ");
        }
        sb.delete(sb.length()-2, sb.length()); // 마지막 ", " 제거
        System.out.println(sb);

        // Text Block (Java 15+)
        String json = """
                {
                    "name": "Java",
                    "version": 21
                }
                """;
        System.out.println(json);

        String html = """
                <html>
                    <body>%s</body>
                </html>
                """.formatted("Hello!");
        System.out.println(html);
    }
}

학습 팁

String 연결(+)은 컴파일러가 StringBuilder로 최적화합니다. 하지만 루프 안에서는 최적화가 안 됩니다. 루프에서는 StringBuilder를 직접 사용하세요.

주의할 점

==로 String 비교 시 리터럴끼리는 intern pool에서 같은 객체를 재사용해 우연히 맞을 수 있습니다. 항상 .equals()를 사용하세요.

자주 묻는 질문

String & StringBuilder & Text Block란 무엇인가요?

Java의 불변 String, 가변 StringBuilder, 그리고 Java 15+의 Text Block을 완전히 마스터합니다.

String & StringBuilder & Text Block 학습 시 주의할 점은 무엇인가요?

== 로 String 비교 시 리터럴끼리는 intern pool에서 같은 객체를 재사용해 우연히 맞을 수 있습니다. 항상 .equals() 를 사용하세요.