[JAVA]문자열 상수 풀(String Pool)

2024. 9. 8. 16:47·Language/JAVA

문자열 상수 풀

문자열 리터럴을 사용할 때, JVM은 문자열 상수 풀에 문자열을 저장한다. 문자열 상수 풀은 동일한 문자열 값을 공유하여 메모리 사용을 효율적으로 관리할 수 있다. 즉, 문자열 상수 풀은 동일한 문자열이 이미 존재할 경우, 새로 문자열 객체를 생성하지 않고 기존의 객체를 재사용한다. 이로 인해 메모리 공간을 절약하고, 불필요한 객체 생성을 방지할 수 있다.

String a = "hello";
String b = "hello";

위 코드에서 a와 b는 동일한 문자열 리터럴 "hello"를 참조한다. 따라서 두 변수는 같은 메모리 주소를 가리키게 되며, a == b는 true를 반환한다.

new 키워드 

반면, new 키워드를 사용하여 문자열을 생성하면, 문자열 리터럴과는 달리 새로운 객체가 메모리에서 할당된다. 이 경우, 문자열 상수 풀에서 기존 문자열을 참조하지 않고 새로운 메모리 공간에 문자열 객체가 생성된다.

String c = new String("hello");

위 코드에서 c는 새로운 문자열 객체를 생성하므로, 문자열 상수 풀에 있는 "hello" 객체와는 다른 메모리 주소를 가진다. 따라서 a==c 또는 b==c는 false를 반환한다.

정리

public static void main(String[] args) {
    //문자열 리터럴을 사용하여 문자열 생성, 문자열 상수 풀에 저장
    String a="hello";
    String b="hello";

    //new 키워드를 사용하여 새로운 문자열 객체 생성
    String c=new String("hello");

    //문자열 리터럴은 동일한 메모리 주소를 참조
    System.out.println(a==b); //true

    // new 키워드를 사용하여 생성된 객체는 다른 메모리 주소를 참조
    System.out.println(a==c); //false
    System.out.println(b==c); //false
}

'Language > JAVA' 카테고리의 다른 글

[JAVA]정적 메소드에서 this를 사용할 수 없는 이유  (2) 2024.11.03
[JAVA]Runnable 인터페이스를 구현해서 스레드를 만드는 이유  (0) 2024.09.28
[JAVA]예외(Exception) vs 에러(Error)  (0) 2024.09.21
[JAVA]currentThread()  (0) 2024.09.21
[JAVA]equals() vs ==  (0) 2024.09.08
'Language/JAVA' 카테고리의 다른 글
  • [JAVA]Runnable 인터페이스를 구현해서 스레드를 만드는 이유
  • [JAVA]예외(Exception) vs 에러(Error)
  • [JAVA]currentThread()
  • [JAVA]equals() vs ==
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JAVA]문자열 상수 풀(String Pool)
상단으로

티스토리툴바