기록하는 중/JAVA

[Java] StringBuffer 클래스

성장하는 요롱이 2023. 12. 21. 23:26
  StringBuffer 클래스

  -  객체 생성 이후 문자열을 수정할 수 있는 기능

  -  내용 변경이 가능한 mutable 클래스

  -  내부적으로 문자열을 저장하기 위해 크기가 조절되는 버퍼를 사용

 

  생성자

  -  StringBuffer( ) : 초기 버퍼 크기 16

  -  StringBuffer(int length)

  -  StringBuffer(String str) : 초기 버퍼 크기는 (str의 길이 + 16)

 

  주요 메소드
메소드 설명
 int capacity( )   현재 할당되어있는 크기를 byte 단위로 측정( 기본 16byte + 문자크기)
 int length( )  주어진 문자열의 길이를 반환.
 char charAt(int index)  index 번째 문자를 반환
 int indexOf(String str)  문자열 중 입력받은 문자가 있으면 해당 문자의 index 값을 반환.
 문자가 없으면 -1을 반환 
int lastIndexOf(String str)  끝부분부터 조회하며 문자열 중 입력받은 문자의 index 값을 반환.
 String subsstring(int index)   index부터 끝가지 문자를 잘라서 반환
 String subsstring(int start, int end)   start부터 end-1까지 반환
 StringBuffer append(char c)  인자를 String 표현으로 바꾸고 원 문자열 끝에 추가하여 반환.
 인자 : char[ ], Object, String, 기본 자료형 가능
 StringBuffer delete(int start, int end)  start부터 end-1까지 문자열 삭제
 StringBuffer insert(int offset, String s)  offset위치부터 s를 삽입
 StringBuffer replace(int start, int end, String s)  start부터  end-1까지의 문자열을 s로 교체
 StringBuffer reverse( )  문자열을 역순으로 변경

   

 StringBuffer 와 StringBuilder
   StringBuffer  StringBuilder
공통점 - 문자열 연산 등으로 기존 객체 공간이 부족할 경우 기존 버퍼 크기를 늘리며 유연하게 동작
- 두 클래스가 제공하는 메소드는 동일
차이점 - 멀티스레드 환경에서 동기화 지원.  
- 단일스레드 환경에서 동기화 처리로 인해 StringBuilder보다 성능이 좋지 않음.
- 안전한 프로그램이 필요할 때나, 개발 중인 시스템의 부분이 스레드에 안전 한지 모를 경우 사용하면 좋음.
- 동기화를 지원하지 않음.
- 단일 스레드 환경에서 사용.
- 스레드에 안전한지 여부가 전혀 관계없는 프로그램을 개발할 때 사용하면 좋음.