String 은 기본형 타입(Primitive type) 이 아닌 참조형 타입 (Reference Type) 입니다.
기본형 타입이 스택에 저장되는 것과 달리 참조형 타입은 힙에 저장됩니다.
String 을 선언하는 방법 중
new 를 사용하여 선언하는 방법도 있으며
String string = new String("홍시 쨩");
""로 바로 입력하는 방법도 있습니다. -> String literal
String string = "홍시 쨩";
JVM Heap 영역 안에는 String Constant Pool이란 영역이 존재합니다.
String literal 방식으로 String을 생성하면, String Constant Pool에 저장됩니다.
생성된 String 은 String Pool에 저장되어 객체의 값이 같다면 같은 reference를 참조하게 됩니다.
하지만 new 로 생성하게 된다면 이미 존재하더라도 Heap 에 새로운 객체로 계속 생성되게 됩니다.
결론
String을 사용할 때 메모리의 이점을 가지려면 String literal 방식을 사용하여 선언하자.
출처 : https://www.geeksforgeeks.org/string-constant-pool-in-java/
좋은 정보에요!