String, StringBuffer, StringBuilder 차이점

자바에서 문자열을 사용할때 도움을 주는 연산자 들은 많다. 하지만 흔히 권하는 방법은 String과 StringBuffer 그리고 StringBuilder 클래스들이다. 사용할 땐 다음을 고려해주면 된다.



  • String은 한번 선언하면 변하지 않기 때문에, 사용하려는 문자열이 변하지 않을때 사용하도록 한다.

  • StringBuffer는 동기화방식으로 저장되기 때문에, 멀티 쓰레드(multi Thread) 환경하에서 문자열 변경시에 사용하도록 한다.

  • StringBuilder는 비동기화방식으로 저장되기 때문에, 싱글 쓰레드(Single Thread) 환경하에서 문자열 변경시 사용하도록 한다.



자바 1.5에서 StringBuilder가 추가된 이유는 위에서 보이는 차이점과 같이 동기화 문제이다. 문자열 수정시 동기화 작업을 거치게 되면 큰 오버헤드를 거칠 수 밖에 없어 성능에 직접적으로 영향을 준다.

고로, 싱글쓰레드에서 동작하는 문자열들은 StringBuilder로 작업하는 것이 옳다.