Effective Java를 읽고 정리한 정리본입니다.

📌 Item 63 : 문자열 연결은 느리니 주의하라

🫧 문자열 연결 연산자와 그에 대한 문제점

문자열 연결 연산자 (+)는 여러 문자열을 하나로 합쳐주는 편리한 수단이다.

그런데 한 줄 짜리 출력값 혹은 작고 크기가 고정된 객체의 문자열 표현을 만들 때라면 괜찮지만, 본격적으로 사용하기 시작하면 성능 저하를 감내하기 어렵다.

문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다.

문자열은 불변이기 때문에 두 문자열을 연결할 경우 양쪽의 내용을 모두 복사해야 하므로 성능 저하는 피할 수 없는 것이다.

public String statement() {
  String result = "";
  for (int i=0; i<numItems(); i++) {
    result += lineForItem(i); // 문자열 연결
  }
  return result;
}

🫧 해결법 - StringBuilder 사용

public String statement2() {
  StringBuilder sb = new StringBuilder(numItems() * LINE_WIDTH);
  for (int i=0; i<numItems(); i++) {
    sb.append(lineForItem(i));
  }
  return sb.toString();
}