2024/10/29 3

final 을 컬 변수에 사용했을 때

불변성이 강조되는 객체지향 프로그래밍의 특성상 자바에서도 UnmodifiableList라는 클래스가 존재한다     해당 UnmodifiableList 선언하는 방식이다.List unmodifiableList = Collections.unmodifiableList(list);  클래스 내부를 보니 단순히 리스트만 가지고 생성자는 이 리스트에 인자로 받은 리스트만 대입할 뿐이다. 그래서 불변이 보정되지 않는다.  UnmodifiableList의 구조를 그림으로 보면 다음과 같다.여기서 Unmodifiable 객체의 메소드 중 변경과 관련된 메소드를 호출하면 다음과 같이 동작한다.얼핏 보면 "변경과 관련된 메소드는 모두 예외를 터뜨리니까 불변성이 보장된게 아닌가?" 싶은 생각이 든다. 하지만 생성자의 thi..

카테고리 없음 2024.10.29

스트링 빌더와 스트링 연산 최적화

JDK1.5 버전 이후부터 String의 + 연산 컴파일시 StringBuilder 로 자동변환되어 성능 최적화가 이뤄 진다고 배웠습니다.하지만 항상 String은 항상 StringBuilder로 변환되지 않습니다.  공식 문서도 찾아봤지만,, 사실 명시해둔게 너무 어려워서 다른 블로그 정리 한 내용 참조 하였습니다. 해당 내용은 자바17로 직접 진행한것입니다. 예제 1번은 이렇게 자바에서도 했을때 최적화가 되는 방법입니다. 예제1) 한줄로 모두 선언한 경우//컴파일 전 소스파일String str1 = "0" + "1" + "2";//컴파일 이 후, 디컴파일 한 소스파일String str1 = "012";한줄로 모두 선언한 경우는 하나의 String으로 변환 되었습니다. 결론적으로 성능최적화가 되었습니다..

Java 2024.10.29