그림 29-2에서 보는 것처럼 String str = "hello";라고 코드를 작성하면 hello라는 객체가 하나 만들어지고, str은 그 객체를 참조합니다.
그림 29-2 | String str = "hello";
두 번째로 String str2 = "hello";라고 코드를 작성하면 앞에서 배웠듯이 hello라는 새로운 String 객체를 만들어내지 않고, str2도 기존에 만들어놓은 hello를 가리킵니다.
그림 29-3 | String str2 = "hello";
str이 concat 메서드를 수행했을 때 String 객체 자체를 바꿔버리면 참조하는 다른 변수들에 문제가 생길 수 있습니다. 따라서 String 클래스는 한 번 만들어진 객체를 바꾸지 않습니다. 이를 불변 클래스라고 합니다.