String은 String + ""와 같이 문자열을 변경할 때 문자열 자체를 지우고 다시 생성한다. 따라서 문자열 연산이 많을 경우 기능이 떨어진다.
StringBuilder는 동기화를 하지 않으며 String과 달리 크기를 변경하여 문자열을 변경한다. 멀티스레드 환경에서 사용하기 부적합하며 멀티스레드가 필요없는 싱글스레드 환경에서 StringBuffer보다 빠르다.
StringBuffer도 String과 달리 크기를 변경하여 문자열을 변경한다. 다만 동기화가 가능하여 멀티스레드 환경에서 StringBuilder보다 멀티스레드 환경에서 안전하다