스터디/이펙티브 자바 스터디
이펙티브 자바 스터디 - 12주차
딱구킴
2023. 1. 6. 14:55
스터디 깃허브 : https://github.com/SeolYoungKim/effective_java_study
- 5명이서 일주일마다 1인 1아이템 정리 및 발표
소스코드 깃허브 : https://github.com/SeolYoungKim/effective-java-example
이펙티브 자바 스터디 12주차
개인 주제 | 아이템 63. 문자열 연결은 느리니 주의하라
- 문자열 연결 연산자
+
로 문자열 n개를 잇는 시간은 n^2에 비례한다.- 문자열은 불변이기 때문에, 두 문자열을 연결할 때 양 쪽의 내용을 모두 복사해야 하기 때문
String 대신 StringBuilder를 사용하자
- 문자열 연결 성능이 아주 크게 개선된다.
StringBuilder sb = new StringBuilder(); sb.append("연결할 문자열"); sb.toString();
정리
- 많은 문자열을 연결할 때는 문자열 연결 연산자
+
를 사용하지 말자 - 대신 StringBuilder의 append 메서드를 사용하자.
- 문자 배열을 사용 하거나, 문자열을 (연결하지 않고) 하나씩 처리하는 방법도 있다.
자매품
StringJoiner
StringJoiner stringJoiner = new StringJoiner(", ");
stringJoiner.add("A").add("B");
String result1 = stringJoiner.toString();
System.out.println(result1); // A, B
String.join
String.join
: 내부적으로 StringJoiner를 사용
String a = "A";
String b = "B";
String result = String.join(", ", a, b);
System.out.println(result); // A, B
공부할 때 참고한 자료
https://cjh5414.github.io/why-StringBuffer-and-StringBuilder-are-better-than-String/