이 질문은 오래된 질문이지만 아직까지도 자바개발을 하는 개발자들이 자주 묻는 질문입니다. 여러가지 이유가 있지만 메모리, 동기화, 자료구조에 대한 이해도에 따라 대답이 달라지기도 합니다. 주요 이유를 알아보겠습니다. 1. String Pool에 대한 필요 String Pool은 자바의 힙영역에서 특수한 저장영역입니다. String 객체가 생성되고 만약 이미 기존에 같은 String 객체가 존재한다면 참조값은 새로운 객체가 아닌 기존의 String 객체로 정해지게 됩니다. 다음의 코드는 heap영역에 하나의 String 객체만을 만들게 될 것입니다. String string1 = “abcd”; String string2 = “abcd”; 원리는 아래의 그림과 같습니다. 문자열을 변경할 수 없는 경우, 하나..