티스토리 뷰
반응형
문자열 연결 연산자 (+)
문자열 연결 연산자(+)는 여러 문자열을 편리하게 합쳐주지만, 본격적으로 사용하면 성능 저하를 감내하기 어려움
문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례 (문자열은 불변 [아이템 17] 이라서 두 문자열 연결 시 양쪽 내용을 모두 복사해줘야해서)
//문자열 연결을 잘못 사용한 예 - 느리다
public String statement() {
String result = "";
for(int i=0; i<items(); i++) {
result += getItem(i); //문자열 연결
}
return result;
}
품목이 많을 경우 이 메서드는 심각하게 느려진다.
StringBuilder
StringBuilder를 사용하면 문자열 연결 성능이 크게 개선됨
//연결 성능이 크게 개선됨
public String statement2() {
String result = new StringBuilder(numItems() * LINE_WIDTH));
for(int i=0; i<items(); i++) {
result.append(getItem(i)); //문자열 연결
}
return result.toString();
}
결론
성능에 신경 써야하고 많은 문자열을 연결해야한다면 문자열 연결 연산자(+)를 피하자.
대신 StringBuilder의 append 메서드를 사용하라.
반응형
'Java > Effective Java' 카테고리의 다른 글
[Effective Java] 65.리플렉션보다는 인터페이스를 사용하라 (0) | 2022.04.12 |
---|---|
[Effective Java] 64.객체는 인터페이스를 사용해 참조하라 (0) | 2022.04.12 |
[Effective Java] 62.다른 타입이 적절하다면 문자열 사용을 피하라 (0) | 2022.04.08 |
[Effective Java] 61.박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2022.04.08 |
[Effective Java] 60.정확한 답이 필요하다면 float와 double은 피하라 (0) | 2022.04.06 |
댓글