본문 바로가기
Programming/Java

[Java] 문자열 초기화 시 Literal String 과 new String() 의 차이점

by 강한수달 2022. 4. 7.

안녕하세요, 오늘은 Java 에서 문자열을 다룰 때 Literal 방식과 new String() 방식의 차이를 알아보겠습니다. 

 

Java에서 Literal String과 new String()은 서로 다른 방식으로 문자열을 생성하는 방법입니다.

  1. Literal String
    • Literal String은 큰 따옴표(" ")로 둘러싸인 문자열입니다. (예시: "Hello, World!")
    • 이 방식으로 생성된 문자열은 String Pool 에 저장됩니다. 동일한 리터럴 문자열이 사용될 경우 같은 메모리 공간을 참조합니다.
    • Java의 메모리 관리에서 효율적으로 문자열을 관리할 수 있어, 같은 문자열이 반복적으로 사용될 때 메모리를 절약할 수 있습니다.
String str1 = "Hello";
String str2 = "Hello";

 

str1str2는 동일한 Literal String 을 참조하므로, 내용이 같은 경우 같은 메모리 주소를 가리키게 됩니다.



2. new String()

  • new String()은 새로운 String 객체를 항상 생성합니다. 즉, 새로운 메모리 공간을 할당합니다.
  • 이 방식으로 생성된 문자열은 String 풀에 있는 것이 아니라 새로운 객체로 Heap 영역에 저장됩니다.
String str3 = new String("Hello");
String str4 = new String("Hello");

 

str3str4는 각각 새로운 String 객체를 만들었으므로, 각자의 메모리 주소를 가리키게 됩니다.

즉, 내용이 같더라도 새로운 객체가 계속해서 생성됩니다.

 

결론적으로, Literal String은 문자열을 String Pool에서 관리하고 동일한 문자열을 공유할 수 있지만, new String()은 항상 새로운 객체를 생성합니다. 주로 동일한 문자열을 비교하거나 사용하는 경우 리터럴 String을 사용하는 것이 메모리 사용 및 성능 측면에서 더 효율적일 수 있습니다.

 

 

※ 출처

'Programming > Java' 카테고리의 다른 글

[Java] char[] 과 String 클래스의 차이는?  (0) 2022.04.07

댓글