Purple Bobblehead Bunny

Backend/JAVA

[JAVA] StringBuilder, StringBuffer

준영어린이 2022. 3. 2. 14:22

 

String 클래스처럼 문자열을 다루는 StringBuilder, StringBuffer 클래스

 

자바에서 문자열을 나타내는 대표적인 클래스
1.. String

2.. StringBuilder
3.. StringBuffer

String 클래스는 Immutable 클래스이다

하지만, StringBuilder, StringBuffer 클래스는 mutable 즉, 변경이 자유롭다. 

 

String 클래스에서 문자열을 생성하고 수정을하는 메소드(concat, replace 등)를 사용하면 원래의 문자열에

덧붙히는게 아닌, 새로운 문자열을 만들어서 바꿨지만,

 

StringBuilder나 StringBuffer 클래스의 경우에는 자기 자신에 추가하여 바꾼다.

----->>>String 클래스는 문자열을 한 번 생성하면 크기를 변경할 수 없지만, (immutable)

            StringBuilder, StringBuffer 클래스는 문자열을 생성한 후에 크기를 자유롭게 변경이 가능하다(mutable)

 

String 클래스로 문자열을 만들면 그 String 클래스에 대한 연산이 많아질 경우, 성능이 안 좋아진다.

StringBuilder, StringBuffer의 경우 연산이 많아질 경우에는 String보다 성능이 좋다.

--> 문자열에 대한 연산이 거의 없을 경우 String, 그 반대의 경우에는 StringBuilder, StringBuffer를 사용

 

성능표

                                                String Builder > StringBuffer > String

 

StringBuilder 클래스와 StringBuffer 클래스 메소드

 

메소드 설명
append(자료형 a) a를 현재 문자열의 마지막 위치에 추가
capacity() 현재 StringBuilder에 할당된 크기를 반환
charAt(int index) index 위치에 있는 문자를 출력
delete(int start, int end) start부터 end-1 위치까지 문자를 제거
insert(int offset, 자료형 a) offset 위치에 a를 문자열로 추가
length() 현재 문자열의 길이를 반환
replace(int start, int end, String str) start부터 end-1 위치까지 str로 대체
substring(int start, int end) start부터 end-1 위치까지 출력
toString()  현재 문자열을 String형으로 반환

StringBuilder

다른 클래스들과 동일하게 다음과 같이 인스턴스화를 시켜준다.

 

자신이 처음에 초기화를 시키고 싶은 경우 -->

StringBuilder 이름 = new StringBuilder("초기화내용");

 

자신이 처음에 Capacity(StringBuilder의 초기 할당 크기)를 원하는 만큼 설정하고 싶은 경우 -->

StringBuilder 이름 = new StringBuilder(할당크기);

 

 

append 메소드

capacity 메소드

 

charAt 메소드

 

 

delete 메소드

 

insert 메소드

 

 

length 메소드

 

 

replace 메소드

 

substring 메소드

 

toString 메소드

'Backend > JAVA' 카테고리의 다른 글

[JAVA] 배치 관리자(Layout manager)  (0) 2022.03.02
[JAVA] Java Swing  (0) 2022.03.02
[JAVA] String 클래스  (0) 2022.03.02
[JAVA] 예외 처리 Exception  (0) 2022.03.02
[JAVA] 바이트기반 Stream  (0) 2022.02.24