String 불변성과 StringBuilder

이경현·2025년 1월 15일

자바가 대표적으로 문자열을 다루는 클래스

  • String
  • StringBuffer
  • StringBuilder

모두 사용목적에 따라 쓰임새가 달라짐

StringBuffer / StringBuilder
문자열을 연산(추가 또는 변경) 할 때 사용하는 자료형(데이터타입)

String 과 concat()메서드로 문자열 이어붙이기 가능하지만 덧셈연산자를 통해 String인스턴스의 문자열을 결합하면 내용이 합쳐진 새로운 String 인스턴스를 생성하게 됨 > 문자열을 많이 결합할 수록 메모리 공간 낭비, 속도 느려짐이라는 문제가 있음

그래서 자바는 문자열 연산을 전용으로 하는 자료형을 만들어 제공함
그게 StringBuffer :

  • StringBuffer :클래스 내부적으로 버퍼 라고 하는 독립적인 공간을 가지게 되어 문자열을 바로 추가 할 수 있어 공간낭비가 없으며 문자열 연산속도도 매우빠르다는 특징이 있음
    사용방식

  • StirngBuilder : 사용법은 동일하나
    차이점 : 버퍼는 멀티스레드환경에서 안전하고 빌더는 문자열 파싱 성능이 가장 우수하다는 장점이 있음

기본적으로 버퍼의 데이터공간크기의 기본값은 16개의 문자를 저장할 수 있는 크기
생성자를 통해 그 크기를 지정할 수 있음
문자열 연산중에 할당된 크기를 넘게되면 자동으로 버퍼를 증강시킴. 효율은 떨어지지만

아래 블로그 들어가면 빌더와 버퍼 클래스의 메서드 볼 수 있음
참고한 블로그

0개의 댓글