본문 바로가기

String Pool2

Java에서 String은 왜 불변일까? Java에서 String은 불변(Immutable) 객체이다. 불변 객체란 무엇일까? 불변 객체란, 객체가 생성된 후 내부의 상태가 변하지 않고 계속 유지되는 객체를 말한다. 즉, 변수에 객체가 한 번 할당되면, 해당 객체의 참조를 변경할 수도, 내부의 상태를 수정할 수도 없는 것이다. Java에서 String 객체는 immutable, 즉 '불변성'이라는 특성을 가지는데, Java 언어를 디자인한 사람들은 왜 그런 선택을 한 것일까? 크게 5가지 이유를 생각해 볼 수 있다. 1. String Pool String이 불변이기 때문에 String Pool도 존재할 수 있다. 어떤 프로그래밍 언어라도 String 타입은 매우 빈번하게 사용된다. 그래서 Java에서는 String Pool이라는 공간에 Stri.. 2020. 7. 21.
String Constant Pool이란? | Java String Pool Java에서 String 객체를 생성하는 방법은 2가지가 있다. 첫번째는 String literal, 즉 큰 따옴표("")를 사용하는 것이고, 두번째는 new 연산자를 사용하는 것이다. 두 방법에는 어떤 차이가 있을까? 간단한 테스트를 작성해 결과를 살펴보았다. String literal로 생성한 객체는 내용이 같다면 같은 객체, 즉 동일한 메모리 주소를 가리키고 있다. 하지만 new 연산자로 생성한 String 객체는 내용이 같더라도 개별적인 객체임을 알 수 있다. 여기에는 어떤 원리가 숨어있는지, JVM 구조와 함께 이해해 보도록 한다. Java String Pool 흔히 new 연산자로 String 객체를 생성하지 않는 것이 좋다는 말을 볼 수 있다. String literal로 생성하면 해당 St.. 2020. 7. 20.