java(자바)
[java(자바)] String, StringBuilder, StringBuffer의 차이 _디버깅의 눈물
디버깅의 눈물
2023. 3. 28. 14:08
String
-한번 생성한 String 객체의 내용은 변경할 수 없는 불변(Immutable)한 클래스입니다.
-불변하기 때문에 멀티 스레드 환경에서 동기화 문제를 신경 쓸 필요가 없고, 조회 연산이 빠릅니다.
-새로운 문자열을 만들 때마다 새로운 String 객체를 생성해야 합니다.
-String은 조회 연산이 빠르지만, 문자열을 변경하는 경우 매우 비효율적이며 메모리 소비가 많아집니다.
StringBuilder
-문자열을 변경할 수 있는 Mutable(가변)한 클래스입니다.
-문자열을 변경하는 동안 내부 버퍼(char 배열)를 사용하므로, 문자열 수정 시 새로운 객체를 생성하지 않습니다.
-문자열을 변경하는 경우 String 대신 StringBuilder를 사용하면 성능상 이점이 있습니다.
-StringBuilder는 멀티 스레드 환경에서 동기화를 보장하지 않습니다.
StringBuffer
-문자열을 변경할 수 있는 Mutable(가변)한 클래스입니다.
-문자열을 변경하는 동안 내부 버퍼(char 배열)를 사용하므로, 문자열 수정 시 새로운 객체를 생성하지 않습니다.
-문자열을 변경하는 경우 String 대신 StringBuffer를 사용하면 성능상 이점이 있습니다.
-StringBuffer는 멀티 스레드 환경에서도 동기화를 보장하도록 설계되었습니다.
-하지만 StringBuilder에 비해 처리 속도가 느리기 때문에, 단일 스레드 환경에서는 StringBuilder를 사용하는 것이 좋습니다.