홈 › 중급 › 04 / 9

java.lang 심화

String, StringBuilder, Wrapper
섹션 7진행 0 / 9

7. 정리

  • String은 불변이다. 풀 공유, 해시 캐싱, 보안, 스레드 안전이 그 이유이며, 모든 변환 메서드는 새 객체를 반환한다.
  • 문자열 비교는 항상 equals. ==는 리터럴끼리만 우연히 true이며 런타임 생성 문자열에서는 false.
  • 루프 안 + 연결은 O(n²). 누적은 StringBuilder, 컬렉션 연결은 join/joining. 한 문장 안의 +는 JDK 9+에서 최적화되므로 그대로 써도 된다.
  • StringBuffer는 동기화 비용만 내는 레거시. 기본은 StringBuilder.
  • Integer 등 Wrapper는 -128~127만 캐시되므로 == 비교 금지, equals 사용. null 언박싱 NPE와 루프 안 박싱 비용에 주의하고, 계산용은 원시 타입을 쓴다.

다음 레슨 05. 컬렉션 프레임워크에서는 hashCode/equals가 실제로 어떻게 HashMap 내부에서 쓰이는지, 각 자료구조의 내부 구현과 시간 복잡도를 다룬다.