본문 바로가기
Java, JSP

[Java/자바] StringBuffer와 StringBuilder의 차이, 사용법

by LasBe 2022. 1. 7.
반응형

⚡️ String과 StringBuffer, StringBuilder


자바에서 불변성을 지닌 String 클래스는 한 번 생성되면 기존의 값에 더하거나 삭제하는, 즉 수정하는 것이 불가능합니다.

 

그러나 문자열에 대한 변경처리를 가능케 하는 StringBuffer와 StringBuilder는

버퍼에 문자열을 담아두고 기존 문자열에 수정을 가할 수 있습니다.

String str = "hello";
str = str + " world";	// 새로운 메모리 영역에 저장

Stringbuffer sb = new StringBuffer(str);
sb.append(" world");	// 기존 메모리 영역에 수정

버퍼의 크기는 최초 16 char의 크기를 가지고 있으며 따로 설정해주지 않더라도 그 크기를 초과하면 자동으로 확장됩니다.

 

아래에서 같이 어떤 차이가 있고 어떤 메소드를 사용하는지 알아보겠습니다.

  • String과  StringBuffer, StringBuilder의 차이
  • StringBuffer와  StringBuilder의 차이
  • StringBuffer와  StringBuilder의 메소드

 

 

📌 [String]과  [StringBuffer, StringBuilder]의 차이

예를 들어 String은 여러 번 출력을 거듭해 문자열을 출력하거나 +연산자를 통해 문자열을 합쳐 새로운 인스턴스를 만들어냅니다.

 

이러한 행위는 그 양이 적을 경우 상관이 없지만 문자열의 양이 많으면 많을수록 새로운 객체의 생성과 기존 객체의 삭제로 인해

공간의 낭비와 성능의 저하를 유발합니다.

 

그에 비해 StringBuffer와 StringBuilder는 버퍼에 문자열을 담아두었다 한 번에 전송하기 때문에 성능면에서 우위를 지닙니다.

 

그 차이는 알고리즘 문제 풀이 시, 두 경우를 나눠 결과를 확인해보면 확연히 드러납니다.

 


📌 StringBuffer와  StringBuilder의 차이

StringBuffer와 StringBuilder는 생성자와 사용할 수 있는 메소드, 기능이 거의 쌍둥이처럼 유사합니다.

 

그 둘을 가르는 차이는 동기화의 지원 유무입니다.

 

StringBuffer는 동기화 지원으로 멀티 쓰레드 환경에서 안정성을 지닌 반면,

StringBuilder는  동기화를 지원하지 않기 때문에 멀티 쓰레드 환경에서 불안전합니다.

 

성능적인 차이는 StringBuilder가 동기화를 지원하지 않기 때문에 단일쓰레드 환경에서의 성능은 StringBuffer보다 뛰어납니다.

 


📌 StringBuffer와  StringBuilder의 메소드

 append()  문자열 뒤에 문자열을 추가
 insert()  문자열의 특정 위치에 문자열을 삽입 
 delete()  문자열의 시작 위치와 끝 위치까지의 문자열 삭제
 subString()  지정한 인덱스의 위치만큼 문자열을 자름
 deleteCharAt()  특정 문자를 삭제
 setCharAt()  특정 문자값을 변경
 reverse()  문자열을 역순으로 만듬
 toString()  String 객체를 리턴
 capacity()  빌더의 버퍼 사이즈를 리턴
 ensureCapacity()  버퍼 사이즈를 임의의 크기만큼 증가
 trimToSize()  버퍼의 크기를 적당한 크기로 축소

 

더보기

자바, 자바 문자열, 자바 문자열 수정, 자바 스트링버퍼, 자바 스트링 빌더, StringBuffer, StringBuilder, StringBuffer 메소드, Stringbuffer 메소드

반응형

댓글


오픈 채팅