PHpullh
학습 라이브러리/Java/문자열 풀과 intern()

JAVA · 기초 문법

문자열 풀과 intern()

String Pool의 동작 원리와 intern() 메서드를 이해합니다.

기초 문법입문StringStringPoolintern문자열

핵심 설명

String Pool의 동작 원리와 intern() 메서드를 이해합니다.

Java code

public class StringPool {
    public static void main(String[] args) {
        // 리터럴 — String Pool에 저장
        String s1 = "hello";
        String s2 = "hello";
        System.out.println(s1 == s2); // true (같은 참조)

        // new — 항상 새 객체 (힙)
        String s3 = new String("hello");
        System.out.println(s1 == s3);      // false
        System.out.println(s1.equals(s3)); // true

        // intern() — Pool에서 가져오기
        String s4 = s3.intern();
        System.out.println(s1 == s4); // true

        // 문자열 연결 최적화 (Java 9+)
        // 컴파일러가 invokedynamic으로 최적화
        String name = "World";
        String greeting = "Hello, " + name + "!";
        System.out.println(greeting);
    }
}

학습 팁

Java 9+에서는 문자열 연결이 invokedynamic으로 최적화되어 StringBuilder를 직접 쓸 필요가 줄었습니다.

주의할 점

new String("abc")는 Pool 외에 힙에 별도 객체를 생성합니다. 특별한 이유 없이 new String()을 사용하지 마세요.

자주 묻는 질문

문자열 풀과 intern()란 무엇인가요?

String Pool의 동작 원리와 intern() 메서드를 이해합니다.

문자열 풀과 intern() 학습 시 주의할 점은 무엇인가요?

new String("abc") 는 Pool 외에 힙에 별도 객체를 생성합니다. 특별한 이유 없이 new String() 을 사용하지 마세요.