본문 바로가기

java(자바)

[java(자바)] String, StringBuilder, StringBuffer의 차이 _디버깅의 눈물

String

-한번 생성한 String 객체의 내용은 변경할 수 없는 불변(Immutable)한 클래스입니다.

-불변하기 때문에 멀티 스레드 환경에서 동기화 문제를 신경 쓸 필요가 없고, 조회 연산이 빠릅니다.

-새로운 문자열을 만들 때마다 새로운 String 객체를 생성해야 합니다.

-String은 조회 연산이 빠르지만, 문자열을 변경하는 경우 매우 비효율적이며 메모리 소비가 많아집니다.

 

 

StringBuilder

-문자열을 변경할 수 있는 Mutable(가변)한 클래스입니다.

-문자열을 변경하는 동안 내부 버퍼(char 배열)를 사용하므로, 문자열 수정 시 새로운 객체를 생성하지 않습니다.

-문자열을 변경하는 경우 String 대신 StringBuilder를 사용하면 성능상 이점이 있습니다.

-StringBuilder는 멀티 스레드 환경에서 동기화를 보장하지 않습니다. 

 

 

StringBuffer

-문자열을 변경할 수 있는 Mutable(가변)한 클래스입니다.

-문자열을 변경하는 동안 내부 버퍼(char 배열)를 사용하므로, 문자열 수정 시 새로운 객체를 생성하지 않습니다.

-문자열을 변경하는 경우 String 대신 StringBuffer를 사용하면 성능상 이점이 있습니다.

-StringBuffer는 멀티 스레드 환경에서도 동기화를 보장하도록 설계되었습니다.

-하지만 StringBuilder에 비해 처리 속도가 느리기 때문에, 단일 스레드 환경에서는 StringBuilder를 사용하는 것이 좋습니다.