Home [Effective Java] Item63. 문자열 연결은 느리니 주의하라!
Post
Cancel

[Effective Java] Item63. 문자열 연결은 느리니 주의하라!

Item63. 문자열 연결은 느리니 주의하라!

Intro

  • 문자열 연결 연산자(+)는 여러 문자열을 하나로 합쳐주는 편리한 수단이다.
  • 한 줄짜리 출력값 혹은 작고 크기가 고정된 객체의 문자열 표현을 만들 때라면 괜찮지만, 본격적으로 사용하면 성능 저하가 심해진다.
  • 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다.

문자열 연결의 예시

1
2
3
4
5
6
7
public String statement() {
  	String result = "";
  	for (int i = 0; i < numItems(); i++) {
      	result += lineForItem(i); // 문자열 연결
    }
  	return result;
}
  • 느.리.다!

StringBuilder

  • 성능을 포기하고 싶지 않다면 String 대신 StringBuilder를 사용하자.
1
2
3
4
5
6
7
public String statement() {
  	StringBuilder sb = new StringBuilder();
  	for (int i = 0; i < numItems(); i++) {
      	sb.append(lineForItem(i));
    }
  	return sb.toString();
}
  • 문자열 연결 시 StringBuilder를 사용하는 것은 상당한 성능 향상이 있으니, 연결 시 StringBuilder를 사용하자.

핵심 정리

  • 성능에 신경 써야 한다면 많은 문자열을 연결할 때는 문자열 연결 연산자(+)를 피하자.
  • StringBuilder의 append 메서드를 활용하는 편이 좋다.
  • 문자 배열을 사용하거나, 문자열을 (연결하지 않고) 하나씩 처리하는 방법도 있다.
This post is licensed under younghwani by the author.

[Effective Java] Item62. 다른 타입이 적절하다면 문자열 사용을 피하라!

[Effective Java] Item64. 객체는 인터페이스를 사용해 참조하라!

Comments powered by Disqus.