이번장의 핵심은...
성능에 신경 써야 한다면 많은 문자열을 연결할 때는 문자열 연결 연산자(+)를 피하자
String 대신 StringBuilder의 append()를 사용하자
String + String
문자열 연결 연산자(+)는 문자열을 하나로 합쳐주는 편리한 수단이다
작고 크기가 고정된 객체의 문자열 표현을 만들때라면 괜찮지만, 성능 저하가 올 수 있다
문자열 연결 연산자로 문자열 n개를 잇는 시간은 n 제곱에 비례한다
문자열은 불변이라서 두 문자열을 연결할 경우,
양쪽의 내용을 모두 복사해서 새로 문자열을 생성하므로 성능 저하는 피할 수 없는 결과다
* 문자열 연결을 잘못 사용한 경우 - 느리다..
품목이 많을 수록 이 메서드는 심각하게 느려질 수 있다
public String statement() {
String result = "";
for (int i=0; i<numItems(); i++) {
result += lineForItem(i); // 문자열 연결
}
}
* StringBuilder를 사용하면 문자열 연결 성능이 크게 개선된다
성능을 포기하고 싶지 않다면 String 대신 StringBuilder를 사용하자
public String statement2() {
StringBuilder b = new StringBuilder(numItems() * LINE_WIDTH)
for (int i=0; i<numItems(); i++) {
b.append(lineForItme(i));
return b.toString();
}
}
'Java > Effective Java 3E' 카테고리의 다른 글
[이펙티브자바 3판] ITEM6. 불필요한 객체 생성을 피하라 (0) | 2020.09.06 |
---|---|
[이펙티브자바 3판] ITEM5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2020.09.06 |
[이펙티브자바 3판] ITEM4. 인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2020.09.05 |
[이펙티브자바 3판] ITEM3. private 생성자나 열거타입으로 싱글턴임을 보증하라 (0) | 2020.09.04 |
[이펙티브자바 3판] ITEM2. 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2020.09.03 |
댓글