반응형
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다.
아이템 63. 문자열 연결은 느리니 주의하라
문자열 연결 연산자(+)
- 여러 문자열을 하나로 합쳐주는 편리한 수단
- 한 줄짜리 출력값을 혹은 작고 크기가 고정된 객체의 문자열 표현을 만들 때는 괜찮지만, 본격적으로 사용하면 성능 저하가 발생할 수 있다.
- 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n제곱에 비례한다.
- 문자열은 불변이기 때문에 두 문자열을 연결할 경우, 양 쪽의 내용을 모두 복사해야하기 때문이다.
ex 1) 문자열 연결을 잘못 사용한 예
public String statement() {
String result = "";
for (int i=0; i<numItems(); i++){
result += lineForItem(i); //문자열 연결
}
return result;
}
- 이 경우, 품목(numItems() 내부 원소)이 많을 경우 이 메서드는 심각하게 느려질 수 있다.
ex 2) StringBuilder를 이용해 문자열 연결을 사용한 예
public String statement2() {
StringBuilder b = new StringBuilder(numItems() * LINE_WIDTH);
for ( int i = 0; i < numItems(); i+=)
b.append(lineForItem(i));
return b.toString();
}
- 이렇게 StringBuilder를 사용하면 성능이 월등히 좋다.
정리
- 많은 문자열을 연결할 때는 문자열 연결 연산자(+) 대신 StringBuilder를 사용하자.
반응형
'BE > Java' 카테고리의 다른 글
[Effective Java] 아이템 65. 리플렉션보다는 인터페이스를 사용하라 (0) | 2022.12.01 |
---|---|
[Effective Java] 아이템 64. 객체는 인터페이스를 사용해 참조하라 (0) | 2022.11.30 |
[Effective Java] 아이템 62. 다른 타입이 적절하다면 문자열 사용을 피하라 (0) | 2022.11.29 |
[Effective Java] 아이템 61. 박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2022.11.28 |
[Effective Java] 아이템 60. 정확한 답이 필요하다면 float와 double은 피하라 (0) | 2022.11.25 |