
github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.base/share/classes/java/lang/String.java AdoptOpenJDK/openjdk-jdk11 Mirror of the jdk/jdk11 Mercurial forest at OpenJDK - AdoptOpenJDK/openjdk-jdk11 github.com github.com/AdoptOpenJDK/openjdk-jdk16/blob/master/src/java.base/share/classes/java/lang/String.java AdoptOpenJDK/openjdk-jdk16 JDK16 mirror from https://github.com/openjdk/jdk16 -..

length() 메서드부터 이제 파악하기 시작한다. 보다가 느낀 게 있는데 JDK 8 버전의 코드와 JDK11 의 코드가 다르다는 점이다. 가령 regionMatch의 경우에는 8의 경우 그저 문자열 지역을 비교하지만 11에서는 latin1 인지와 UTF8의 여부를 체크하여 비교하는 로직이 존재한다. 메서드 중 ignoreCase 가 들어가는 경우 toLowerCase(char.toUppserCase()) 의 경우를 비교하는데 이는 uppderCase의 경우 아래와 같은 경고가 있어서 그 사유를 알 수 있다. // Unfortunately, conversion to uppercase does not work properly // for the Georgian alphabet, which has stran..
무려 613줄까지가(주석 포함) 새성자 관련 구문이다. 생성자는 매우 다양한데, 일반 char[], int[], byte[], StringBuffer, StringBuilder에 이르는 다양한 인자를 기반으로 생성된다. 각각은 배열인 만큼 offset, count 등의 추가 변수를 통한 오버라이딩을 통하여 다양한 변인이 존재한다. 이 때 int[] 를 받는 생성자는 BMP, Supplementary Character를 처리하기 위한 로직이 추가로 존재한다. 따라서 실제 리턴되는 문자열 즉 char[]의 길이는 적용된 부분 배열(subarray of int[])의 길이보다 길어질 수 있다. byte[] ascii를 받는 생성자는 Depreicated 되어 있는데 Charset 혹은 String charse..