본문 바로가기
Programming 💾

자바 String, StringBuffer, StringBuilder 알아보기!

by 베이비 직장인 2022. 2. 2.
반응형

자바를 배울때, 가장 많이 사용하는 데이터 형은 바로 String이라고 생각합니다.

숫자를 문자열로 저장하기도 하고, 주로 출력하는 데이터는 문자열이기 때문입니다.

 

하지만, String말고도 StringBuffer, StringBuilder와 같은 다양한 데이터형이 자바에 존재하는데요.

오늘은 StringBuffer, StringBuilder와 String의 차이점, 그리고 무엇이 좋은지를 포스팅해보겠습니다. 

 

- String

String str = "안녕하세요";

먼저, String에 대해서 알아보겠습니다. String은 위와 같이 선언합니다.

String의 특징은 "변하지 않는다" 라는 점입니다.

변하지 않는다? 라는 부분이 이해가 안되실 수도 있을 것 같아 그림으로 설명드리겠습니다.

 

String str = "안녕";
str = "안녕하세요";

다음과 같이 str을 선언하고, str의 내용을 바꾸는 소스가 있다고 합니다.

생각하기에는 단지 str의 값을 바꾸는 것이라고 생각하겠지만,

결국 다른 오브젝트를 생성하고, 참조값을 바꾸게 되는 것 입니다. 

String 값 변경시에 메모리 참조

- StringBuffer , StringBuilder

StringBuffer stringbuffer = new StringBuffer("안녕하세요");
StringBuilder stringBuilder = new StringBuilder("안녕하세요");

StringBuffer와 StringBuilder는 문자열의 일부를 수정하거나, 내용을 추가하는 경우에 사용합니다. 

StringBuffer와 StringBuilder에는 insert(), append()와 같은 함수를 가지고 있기 때문입니다. 

 

- String과 StringBuffer, StringBuilder의 차이

insert()와 같은 함수를 이용할 경우 문자열을 추가하게 되는데요. 이 과정에서 String과는 다르게, 

오브젝트의 값을 바꾸게 됩니다. 그러므로, String과는 다르게 메모리 걱정을 할 필요가 없어지는 것입니다.

 

- StringBuffer, StringBuilder의 차이

String과 StringBuffer, StringBuilder의 차이점에 알아봤으니, 다음은 StringBuffer와 StringBuilder의 차이에 대해

알아보도록 하겠습니다. 

StringBuffer와 StringBuilder의 차이는 스레드의 차이입니다. 

StringBuffer는 멀티스레드를 지원하기 때문에 같은 StringBuffer의 인스턴스에 접근이 가능합니다. 

StringBuilder는 싱글스레드를 지원합니다. 

 

- StringBuffer, StringBuilder 함수

함수 설명
insert() 문자열의 특정 위치에 문자열 삽입
append() 문자열 뒤에 문자열을 삽입
delete() 문자열 삭제
subString() 지정한 문자열 위치로 문자열을 삭제
setCharAt() 특정 문자값 변경
... ...

위의 함수 외에도 다양한 함수들을 가지고 있습니다. 

 

String, StringBuffer, StringBuilder에 대해 알아봤습니다. 

질문이나 잘못된 것이 있다면 댓글로 남겨주세요!

반응형

댓글