웹사이트 검색

Java 문자열 풀이란 무엇입니까?


이름에서 알 수 있듯이 Java의 문자열 풀은 Java 힙 메모리에 저장된 문자열 풀입니다. 우리는 String이 Java의 특수 클래스라는 것을 알고 있으며 큰따옴표로 값을 제공할 뿐만 아니라 new 연산자를 사용하여 String 개체를 만들 수 있습니다.

Java의 문자열 풀

package com.journaldev.util;

public class StringPool {

    /**
     * Java String Pool example
     * @param args
     */
    public static void main(String[] args) {
        String s1 = "Cat";
        String s2 = "Cat";
        String s3 = new String("Cat");
        
        System.out.println("s1 == s2 :"+(s1==s2));
        System.out.println("s1 == s3 :"+(s1==s3));
    }

}

위 프로그램의 출력은 다음과 같습니다.

s1 == s2 :true
s1 == s3 :false

권장 읽기: Java 문자열 클래스

문자열 풀에서 얼마나 많은 문자열이 생성되고 있습니까?

때때로 Java 인터뷰에서 String pool에 대한 질문을 받게 됩니다. 예를 들어 아래 문에서 생성되는 문자열의 수입니다.

String str = new String("Cat");

위의 문장에서 1 또는 2 문자열이 생성됩니다. 풀에 문자열 리터럴 "Cat\이 이미 있는 경우 풀에는 문자열 "str\ 하나만 생성됩니다. 풀에 문자열 리터럴 "Cat\이 없으면 풀에서 먼저 생성된 다음 힙 공간에서 생성되므로 총 2개의 문자열 개체가 생성됩니다. 읽기: Java 문자열 인터뷰 질문