프로그래밍/Java

[JAVA] String, StringBuilder, StringBuffer

DwEnn 2017. 9. 28. 20:37
728x90
반응형

String


new 에 의한 생성이 아닐 때 초기 컴파일러 분석단계에서 literal 처리에 의해 최적화가 될 수 있기 때문에 오히려 빠른 결과를 보여줄 때가 있다


StringBuffer, StringBuilder


초기에 생성할 때 Buffer Size를 주도록 구성되며

이에 의한 생성, 확장 오버로드가 걸리기 때문에 의외로 Buffer Size를 잘못 지정할 경우 성능이 떨어질 가능성도 있다


단순 성능만 보면, 연산이 많은 경우(정확한것은 아님)


String < StringBuffer <StringBuilder


런타임의 경우 + 연산자의 연산속도가 현저하게 느려진다


StringBuilder, StringBuffer 의 차이


동기화 지원여부


두 클래스가 제공하는 메소드는 같다

그러나 메소드를 보면 StringBuffer는 각 메소드 별로

synchronized keyword가 존재


즉, 멀티 쓰레드 상태에서 동기화를 지원한다는 것이 다르다



사용기준

String // 객체는 불변이기 때문에 변하지 않는 문자열의 경우 사용

StringBuilder // 비동기 방식이기 때문에 SingleThread 환경하의 변화되는 문자열의 경우 사용

StringBuffer // 동기방식

반응형