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 내부에서 쓰이는지, 각 자료구조의 내부 구현과 시간 복잡도를 다룬다.