본문 바로가기
JAVA

StringBuffer 와 StringBuilder 차이점

by eqzero 2008. 12. 22.

StringBuilder 클래스는 java 5.0 이후 나온 문자열 처리 클래스인데 기존의 StringBuffer과는 동일한 클래스이지만
단 한가지 차이점은 동기화(synchronization) 처리를 하지 않는다는거다..

이건 멀티쓰레디 프로그래밍에선 사용하면 안되지만 그렇지 않은 경우엔 StringBuffer보다 빠른 성능을 보장한다.
이 동기화 처리를 빼면 두 클래스의 차이점이 없기 때문에 성능향상이 극단적(?)으로 필요한 경우가 아니라면 기존 StringBuffer 클래스를 계속 사용해도 무방할듯하다. (멀티쓰레드 환경이 아니라면 StringBuilder를 사용하도록 하자.)

댓글2

  • toy 2008.12.22 00:00

    조금 오류가 있어 보여 적습니다.계속해서 StringBuffer를 사용하는 해도 무방?하다는 표현이 조금 어폐가 있습니다. 그러지 말라는 의도로 만들어진 class가 StringBuilder입니다. 대부분의 코딩시 thread-safe가 요구되는 상황은 그리 많지 안습니다. 이런 상황에서 불필요한 동기화는 좋은게 아니겠죠. 비스한 예로 Vector 대신 ArrayList/LinkedList 사용이나 HashTable대신 HashMap을 사용하는예와 동일한 이유라고 보시면 되겠습니다.정말로 StringBuilder는 StringBuffer와 동일한 method를 가지기 때문에 find-replace로 StringBuffer를 StringBuilder로 바꾸어도 compile 오류가 발생하지 않습니다. 1.5이상이라면 StringBuilder를당연히 사용해야 겠죠..
    답글

  • Coder 2008.12.22 00:00

    아 네..제가 좀 다르게 생각하고 있었네요..조언 감사드립니다. 참고하겠습니다.
    답글