[Java] StringBuilder 사용법

toget ㅣ 2023. 10. 3. 11:26

StringBuilder
String은 문자열을 연결을 할 때마다 메모리를 새로 생성하고 삭제하는 방식이라 비효율적이지만,
StringBuilder는 가변 문자열을 다루는 클래스로, 문자열 연결 및 수정 작업에 효율적입니다.

 

예시 String

String str1="abc";
str1 = str1 + "defg";
str1 = str1.replace("b", "z");


먼저 문자열 "abc"를 가지는 str1 변수를 선언합니다.

str1 = str1 + "defg";
문자열 연결 연산을 사용하여 str1에 "defg"를 추가합니다.

이 작업은 문자열을 연결할 때마다 메모리를 새로 생성하고

삭제하는 비효율적인 방식입니다.

str1 = str1.replace("b", "z");

str1 문자열에서 "b"를 "z"로 대체합니다.

이 작업은 String 클래스의 메소드를 사용하므로 메모리를 생성하고 삭제하는 비효율적인 작업입니다.

 

StringBuilder를 사용하면 더 효율적으로 문자열을 수정할 수 있습니다.

 

StringBuilder sb = new StringBuilder();

String str2 = sb.append("글자를 추가한다.").toString();
System.out.println(str2);

//0글1자2를 (4추5가6)한7다.8.9
System.out.println(sb.delete(4, 6).toString());
System.out.println(sb.replace(4, 4,"수정").toString());
System.out.println(sb.replace(4, 6,"치환").toString());
System.out.println(sb.append("글자를 추가한다.").toString());

String str2 = sb.append("글자를 추가한다.").toString();: sb에 "글자를 추가한다."를 추가하고, 그 결과를 toString() 메소드를 사용하여 문자열로 변환하여 str2 변수에 저장합니다.

"글자를 추가한다."가 출력됩니다.

System.out.println(sb.delete(4, 6).toString());

sb에서 인덱스 4부터 6 직전까지의 문자열을 삭제하고, 그 결과를 문자열로 변환하여 출력합니다.
따라서 "글자를 추가한다."에서 "를 "가 삭제되어 "글자 추가한다."가 출력됩니다.

System.out.println(sb.replace(4, 4, "수정").toString());

sb에서 인덱스 4부터 4 직전까지의 문자열을 "수정"으로 대체하고, 그 결과를 문자열로 변환하여 출력합니다.
이 작업은 아무런 변경이 일어나지 않으므로 "글자 추가한다."가 출력됩니다.

System.out.println(sb.replace(4, 6, "치환").toString());
sb에서 인덱스 4부터 6 직전까지의 문자열을 "치환"으로 대체하고, 그 결과를 문자열로 변환하여 출력합니다.

따라서 "글자치환한다."가 출력됩니다.

System.out.println(sb.append("글자를 추가한다.").toString());

sb에 "글자를 추가한다."를 추가하고, 그 결과를 문자열로 변환하여 출력합니다.
이전 문자열 "글자치환한다."에 "글자를 추가한다."가 추가되어 "글자치환한다.글자를 추가한다."가 출력됩니다.

 

결론
StringBuilder 클래스를 활용은 문자열을 수정할 때 메모리를 새로 생성하고 삭제하는 비효율성을 줄일 수 있으므로 문자열 조작 성능을 향상시킬 수 있습니다.