Set.of
, List.of
, Map.of
null
값을 넣을 수 없게 방어해준다.Set
,Map
은 중복값을 넣는 경우에도 오류를 발생시켜 방어해준다.Collections.unmodifiableXxx
unmodifiable
컬렉션에 이 값이 반영된다. 즉, 완벽한 immutable 이 아니다.String
은 char []
로 표현되고 char
는 UTF-16 으로 2byte 를 차지했다. byte[]
로 저장하여 1byte 단위로 공간을 차지하게 최적화 하였다.Latin-1
문자로 이루어진 경우에는 coder
라는 String
의 내부 변수를 LATIN1
으로 설정하여 1 바이트 단위로 읽고UTF-16
일 경우에는 coder
값을 UTF_16
으로 설정하고 2 바이트 단위로 읽는다. StringBuilder
와 StringBuffer
에도 최적화가 반영되어있다.StringBuilder
로 만들어주었었으나 이 경우 StringBuilder
의 기본 버퍼 크기를 사용하면서 버퍼 크기 부족시 성능저하가 있을 수 있음.+
연산시 invokeDynamic
으로 StringBuilder
를 동적으로 최적화 해서 호출한다.+
연결은 그냥 +
를 사용하는게 훨씬 빠르다. 물론 Java 9 이상을 target 으로 컴파일해야 한다.“+ is no longer compiled to StringBuilder.” In their “Lessons from Today” slide, they state, “Use + instead of StringBuilder where possible” and “recompile classes for Java 9+.”
ISO-8859-1
로 명시하고자 한다면java.util.PropertyResourceBundle.encoding=ISO-8859-1