끄적이는 중...

Note

[Java] StringBuilder

왜 필요하냐면

Java의 String은 한 번 만들면 못 고친다 그래서 +로 붙이면 기존 걸 고치는 게 아니라 새 문자열을 통째로 다시 만든다

String s = "";
s = s + "a";   // "a" 새로 만듦
s = s + "b";   // "ab" 새로 만듦 (a를 다시 베껴 씀)
s = s + "c";   // "abc" 새로 만듦 (ab를 또 베껴 씀)

매번 새 종이에 처음부터 다시 베껴 쓰는 것과 같다 몇 번이면 괜찮지만 10만 번이면 엄청 느려진다

StringBuilder는 공책이다 이미 쓴 거 뒤에 이어서 쓰기만 한다

사용방식

StringBuilder sb = new StringBuilder();   // ① 빈 공책 준비

sb.append("a");   // ② 이어 쓰기
sb.append("b");
sb.append("c");

String result = sb.toString();   // ③ 다 쓰면 String으로 바꾸기 → "abc"

이때 ③을 까먹는 경우가 많은데, 문제에서 String을 return하라고 하면 꼭 toString()으로 바꿔서 돌려줘야 한다

덤: 자주 쓰는 기능

sb.reverse();     // 뒤집기 "abc" → "cba"
sb.length();      // 길이

언제 쓰는가?

  • 반복문 안에서 문자열을 계속 붙일 때 → StringBuilder
  • 두세 번 붙이고 끝날 때 → 그냥 +

관련글