[Java] String, StringBuilder, StringBuffer 차이

임재성·2023년 12월 24일

String, StringBuffer, StringBuilder

  • 모두 문자열을 사용할때 쓰게되는 클래스들이다.

  • String은 immutable(불변), StringBuffer/StringBuilder는 mutable(변경가능) 이라는 기본적인 차이가 존재한다.

  • String의 경우 '+'연산자를 사용하여 문자열을 덧붙일때, 새로운 인스턴스를 생성한다. 2글자에 1글자를 합치게되면 2+1이 아니라 2 + (2 + 1)이 되는 셈이라고 생각하면 될듯하다.

  • 반면에 StringBuilder와 StringBuffer의 경우 할당된 버퍼의 크기를 늘려가면서 가변적으로 동작한다. 위의 String과 달리 글자를 덧붙이면 기존의 메모리할당에서 필요한 만큼만 늘어난다고 생각하면 될듯하다.

StringBuffer, StringBuilder

  • StringBuffer는 멀티쓰레드 환경에서도 동기화를 지원하여 안전하게 사용할 수 있다.

  • StringBuilder는 멀티쓰레드 환경에서 동기화를 지원하지 않는다는 차이점이 있다.

  • StringBuilder는 StringBuffer와 달리 동기화에 대한 지원이 없어 해당 처리 과정이 없으므로, 단일스레드 환경에서는 더 좋은 퍼포먼스를 보여준다.

profile
조금씩 앞으로

0개의 댓글