String
문자열 삽입, 삭제, 수정이 많지 않을 때 사용하기 적합
불변(immutable) 객체
문자열이 수정될 때마다 새로운 객체가 Heap에 생성됨
불변성을 가지므로 멀티 스레드 환경에서 안전 (Thread-Safe)
StringBuffer
가변(mutable) 객체
문자열 삽입, 삭제, 수정이 빈번하게 발생 시 사용하기 적합
synchronized 키워드를 사용하여 멀티 스레드 환경에서 안전 (Thread-Safe)
StringBuilder
가변(mutable) 객체
문자열 삽입, 삭제, 수정이 빈번하게 발생 시 사용하기 적합
동기화를 지원하지 않음
단일 스레드의 성능이 StringBuffer 보다 뛰어남