[Java] 딥 다이브 (String, Wrapper Class, Asynchronize)
StringString의 불변성과 finalString은 클래스 자체가 final이고, 내부에 문자 배열도 final이라 한 번 생성하면 내용이 절대 바뀌지 않는 불변객체이다. 이런 연산들(+, substring, replace 등)은 기존 객체를 수정하는 게 아니라 새로운 String 객체를 생성해 반환한다. 불변성이 있기 때문에 멀티스레드 환경에서도 동기화 없이 안전하게 공유할 수 있고, 해시값이 변하지 않아 HashMap 키로 쓰기에도 적합합니다. 그렇기 때문에 String을 + 와 사용하는 경우 아래와 같은 원리로 문제가 발생한다.매 반복마다 새로운 String이 생성되고, 기존 문자열 전체를 새 배열에 복사시간 복잡도 관점에서 사실상 누적 O(n²) 수준이 되어 큰 입력에서 속도가 급격히 느려짐..