카테고리 없음

new string , 리터럴 의 차이

jw-backend 2024. 7. 24. 00:47
반응형

String 리터럴과 new String()의 차이는 주로 메모리 저장 방식에 있습니다. 이 두 가지 방식에 대해 자세히 설명드리겠습니다.

1. String 리터럴

  • 정의: 문자열을 직접 코드에 작성하는 방식입니다. 예를 들어, "Hello"와 같은 형태입니다.
  • 저장 위치: 리터럴은 **문자열 풀(String Pool)**에 저장됩니다. 문자열 풀은 JVM에서 관리하는 특별한 메모리 영역으로, 동일한 문자열 리터럴이 여러 번 사용될 경우, 같은 인스턴스를 재사용합니다.
  • 예시:

    java

    String str1 = "Hello";
    String str2 = "Hello";
    // str1과 str2는 같은 객체를 참조합니다.
    

2. new String()

  • 정의: new String("Hello")와 같이 String 객체를 생성하는 방식입니다.
  • 저장 위치: 이 경우 문자열은 힙 메모리에 저장됩니다. 매번 새로운 String 객체가 생성되므로, 같은 내용의 문자열이라도 서로 다른 객체로 취급됩니다.
  • 예시:

    java

    String str3 = new String("Hello");
    String str4 = new String("Hello");
    // str3과 str4는 서로 다른 객체를 참조합니다.
    

요약

  • 문자열 리터럴은 문자열 풀에 저장되며, 같은 문자열 리터럴은 동일한 객체를 참조합니다.
  • **new String()**을 사용하면 힙 메모리에 새로운 객체가 생성되므로, 같은 내용을 가진 문자열이라도 서로 다른 객체로 취급됩니다.