
String, StringBuilder, StringBuffer는 Java에서 문자열을 다루기 위해 자주 사용되는 클래스입니다. 사용하기에 앞서 차이를 명확히 이해하는 것이 중요합니다. 이들에 대한 특징과 차이를 살펴보도록 하겠습니다.
String은 불변 객체로 한 번 생성되면 내부 값이 변경되지 않습니다. 문자열 수정이 발생할 경우, 기존 객체를 변경하는 것이 아니라 새로운 객체를 생성합니다. 이로 인해, 멀티-쓰레드 환경에서 동기화 없이 안전하게 사용할 수 있습니다.
StringBuilder는 가변 객체로 내부 버퍼를 변경할 수 있습니다. 따라서, 문자열 수정이 발생할 경우, 기존 객체를 수정합니다. 하지만, 멀티-쓰레드 환경에서 안전하지 않기 때문에 비동기 환경엔 적합하지 않습니다.
StringBuffer는 StringBuilder와 유사하게 가변 객체로 내부 버퍼를 변경할 수 있어, 수정 발생 시 기존 객체를 수정합니다. 차이점은 멀티-쓰레드 환경에서 안전하게 동작할 수 있도록 내부 메서드에 synchronized 키워드가 적용되어 있어, 비동기 환경에서도 사용할 수 있습니다. 하지만, 동기화 비용으로 인해 StringBuilder보다 성능이 다소 낮다는 단점이 있습니다.
이에 따른 결론은 다음과 같습니다.
String 사용StringBuilderStringBuffer