구리

[Java] StringBuilder 사용하는 이유? 본문

Java

[Java] StringBuilder 사용하는 이유?

guriguriguri 2021. 9. 10. 12:37

백준 사이트에서 알고리즘 문제를 풀다가 처음으로 StringBuilder를 접하였습니다.

String 대신으로 사용하는 것 같고 append() 메소드 호출로 원하는 문자열을 추가할 수 있는 것 같은데... 성능면에서 더 좋은 것 같아서 String 대신 쓰는 것 같으니 사용하는 이유를 자세히 알지 못하여 알아보았습니다.

 

String불변(immutable) 객체로 값을 변경할 수가 없으며 만약 String a, String b라는 2개의 객체를 더할 경우 (+)를 이용한 값 변경은 기존에  String에 들어있던 값을 버리고 새로운 값을 할당하기에 해당 연산이 많아진다면 성능이 떨어지게 됩니다.

 

그래서 사용하는 것이 StringBuilder 인데 변하는 녀석으로 (mutable) 문자열을 더할 때 새로운 객체를 생성하는 것이 아닌 기존의 데이터에 더하는 방식으로 속도도 빠르며 상대적으로 부하가 적다고 합니다.

 

[간단한 사용법]

StringBuilder sb = new StringBuilder();
sb.append("hello!\n");
sb.append("Java&");
sb.append("Python");
System.out.println(sb);

 

[관련 메소드]

StringBuilder append(값) StringBuilder 뒤에 값을 삽입
StringBuilder insert(인덱스, 값) 특정 인덱스부터 값을 삽입
StringBuilder delete(인덱스, 인덱스) 특정 인덱스부터 인덱스까지 값을 삭제
int length() StringBuilder 길이(int) 반환
StringBuilder reverse() 글자 순서를 뒤집음