← Back

Java StringBuilder로 문자열 연결하기

Java에서 문자열 몇 개를 간단히 이어 붙일 때는 + 연산자로 충분하다.

하지만 문자열을 반복적으로 변경하거나 누적해야 한다면 StringBuilder를 사용하는 편이 효율적이다. 예를 들면 다음과 같은 경우다.


String을 반복해서 더하면 느린 이유

String은 한 번 생성되면 내용을 바꿀 수 없는 불변 객체다. 따라서 기존 문자열에 내용을 더할 때마다 결과를 담을 새로운 String 객체가 생성된다.

String result = "";
for (int i = 1; i <= 5; i++) result += i; // 매번 새로운 String 생성
System.out.println(result); // 12345

연결 횟수가 많아질수록 이전 문자열을 복사하는 작업도 반복되어 부하가 커진다.


StringBuilder로 문자열 연결하기

StringBuilder는 내부 버퍼에 내용을 추가한다.
마지막에 toString()을 호출하면 완성된 문자열을 얻을 수 있다.

StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 5; i++) sb.append(i); // 내부 버퍼에 추가
System.out.println(sb.toString()); // 12345

append()에는 문자열뿐 아니라 숫자, 문자 등 여러 자료형을 전달할 수 있다.

StringBuilder sb = new StringBuilder();

sb.append("Java");
sb.append(' ');
sb.append(21);

System.out.println(sb); // Java 21

자주 사용하는 메서드

StringBuilder는 문자열을 추가하는 것 외에도 삽입, 삭제, 변경 등의 기능을 제공한다.

메서드설명
append(value)문자열 끝에 값 추가
insert(index, value)지정한 위치에 값 삽입
delete(start, end)지정한 범위의 문자 삭제
replace(start, end, value)지정한 범위를 다른 문자열로 변경
reverse()문자열 순서 뒤집기
length()문자열 길이 반환
charAt(index)지정한 위치의 문자 반환
StringBuilder sb = new StringBuilder("Hello World");

sb.replace(6, 11, "Java");
System.out.println(sb); // Hello Java

sb.reverse();
System.out.println(sb); // avaJ olleH
← Back