본문 바로가기
스터디/이펙티브 자바 스터디

이펙티브 자바 스터디 - 12주차

by 딱구킴 2023. 1. 6.

스터디 깃허브 : 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/

댓글