자바 String class에는 substring이라는 메소드가 있습니다.
이전 포스팅에서 string은 immutable하다는 이야기를 하면서 문자열 + 연산에 대해 이야기 했습니다.
이번에는 부분 문자열 이야기입니다.
String은 불변하기 때문에 아래와 같은 코드를 실행하면
String str = "abcd";
str = str.substring(0,2);
str에는 ab가 저장됩니다.
하지만 자바 내부적으로는 어떻게 될까?
String은 객체 타입이기 때문에 힙 영역에 할당 됩니다.

substring() 메소드를 호출하고 나면 아래와 힙 영역이 변합니다.

ab라는 새로운 String 객체를 생성하고 str이 새로운 객체를 가리키게 됩니다. 그리고 기존의 abcd는 힙 공간에 남아있다가 gc에 의해 객체가 소멸될 것입니다.
자바의 String은 객체 타입이고 immutable하기 때문에 문자열을 이용해 연산을 할 때 주의해야 합니다.