본문 바로가기

공부 자료/자바[JAVA]

[JAVA] StringBuilder란?

문자열을 연결할 수 있는 StringBuilder 사용하기

 

 

우리는 문자열을 연결할 수 있는 다양한 방법을 알고 있을텐데,

그 중 가장 쉽게 떠올리는 것이 바로 더하기(+) 연산일 것이다.

하지만, 문자열이 매우 많고, 이를 다 이어붙인다고 한다면?

 

문자열을 + 연산자를 사용해 연결한다는 것은 연결할 때마다 새로운 문자열 개체가 생성된다는 것을 의미하게 된다.

즉, String 객체는 한 번 생성되면 변경이 불가능하며, 하나의 문자열을 다른 문자열과 연결하면 새로운 문자열이 생겨나면서,

기존 문자열은 가비지 컬렉터로 들어간다는 것을 의미한다.

객체를 생성하는 작업은 다른 작업보다 시간이 오래 걸리게 되어 + 연산자를 이용해 문자열을 연결한다는 것은

비효율적인 코드가 된다는 것을 의미할 수 밖에 없다.

 

이를 고려했을 때 사용하는 것이 바로 StringBuilder이다.

StringBuilder는 변경 가능한 문자열을 만들어 String을 연결할 때 하나의 대안이 될 것이다.

사용 방법은 아래와 같다.

 


 

StringBuilder 사용하기

 

public class stringadd{

	StringBuilder stb = new StringBuilder("a");
    stb.append("b");
    
    System.out.println(stb.toString); // 결과 : ab
}

 

* StringBuilder는 출력하기 위해서는 toString을 통해 변환을 시켜야 하며, String 변수에 넣을 때에도 동일하다.

 


 

[StringBuilder 메서드]

 

문자열을 연결(추가)하는 것 뿐아니라 변경하거나 삭제하는 동작도 가능한데, 이 때 사용하는 메서드는 아래와 같다.

 

1. append : 문자열을 맨 뒤에 추가

2. insert(int n, String str) : n위치에 str을 추가

3. replace(int n, int m, String str) : n~m 인덱스에 위치한 문자열을 str로 변경

4. substring(int n (, int m)) : 인덱스가 1개라면 n부터 끝까지, 2개일 경우 n~m까지 추출

5. deleteCharAt(int n) : n번째 인덱스 문자 하나 삭제

6. delete(int n, int m) : n부터 m 이전까지의 문자 삭제

7. toString() : String 변환

8. reverse() : 문자열 뒤집기

9. setCharAt(int n, String str) : n 위치 문자을 str로 변경

10. setLength(int n) : 문자열의 길이가 n 보다 길면 n까지만 남기고 삭제, 문자열의 길이가 n보다 길면 남은 공간은 공백

11. trimToSize() : 문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정