immutable(불변)
한번 할당된 메모리 공간이 변하지 않음.
+연산 또는 concat메소드 사용시, 기존의 생성된 String 클래스 객체 문자열에 다른 문자열을 붙히는 것이 아님. 새로운 String 객체를 만들어, 연결된 문자열 저장, 그 객체를 참조
문자열 연산이 적을때 사용
동기화에 신경을 안써도됨(Thread-safe), 내부데이터를 자유롭게 공유
(Heap메모리 영역(가비지 컬렉션 동작), 산번 생성된 객체의 내부 내용을 변화 시킬수 없음. 기존 객체 제거시 Java의 가비지 컬렉션이 회수)
mutable(가변)
API이용가능
각 메소드별로 Synchronized Keyword 존재, 멀티스레드 환경에서 동기화를 지원
멀티스레드 환경에서 좋음
동기화 관련 처리로 인해서 Stringbuilder에 비해 단일스레드에서 성능이 좋지않다.
멀티스레드 환경
mutable(가변)
API이용가능
멀티스레드 동기화 보장X
단일스레드 환경에서 좋음
JDK 1.5이후 버전에서는 String 활용시 StringBuilder와 성능상 차이는 없지만, 객체를 추가생성함