JAVA에서 String 객체를 생성하는 방법은 두가지가 있다.
new
예약어 사용하는 방법""
(큰따옴표) 사용하는 방법
두 방법의 차이점은 객체 생성시 참조하는 메모리 주소에 있다.
먼저 1번 방법으로 객체를 생성하면 같은 문자열이라도 서로 다른 메모리 주소를 참조하게 된다. 즉 같은 문자열을 가지고 있더라도 서로 다른 곳에 개별적으로 저장된다는 뜻이다.
반대로 2번 방법으로 객체를 생성하게 되면 같은 내용의 문자열을 생성할 때, 기존에 생성되어 있던 객체의 메모리 주소를 그대로 참조한다. 즉 새로운 메모리에 객체를 생성하는 것이 아니라 같은 내용의 문자열이 저장된 메모리 주소를 그대로 사용한다는 뜻이다.
이처럼 큰따옴표로 생성한 String 객체를 생성한 경우, 그 객체가 저장되는 메모리 구역을 Constant Pool 이라고 하고 Constant Pool은 해당 공간에 이미 저장된 메모리가 또 다시 생성될 경우에 다른 메모리 주소에 객체를 또 생성하는 것이 아니라 이미 생성된 메모리의 주소만 참조하면서 메모리 공간의 효율성을 높이는 역할을 한다.