String compareTo( String )

sally·2022년 9월 6일
0

JAVA

목록 보기
3/4

java 의 String 클래스

알아보고자 들어갔다가, 잘 모르겠지만..

COMPACT_STRINGS true 로 해놓고서, String 생성 과정에서 Latin인지 UTF16인지 구분 처리에 계속 이용되어지는 상수 인 것 같다.

static final boolean COMPACT_STRINGS;

static {
    COMPACT_STRINGS = true;
}

StringLatin1.compareTo( byte[] , byte[]) 를 가보면

하나씩 순회하며 다를 경우, char 간의 차이만큼의 수를 반환한다.

동일 할 경우 마지막으로 길이의 차이값을 반환한다.

  • 작은 길이를 우선순위로 순회하여 비교먼저 했기 때문에
  • abcd < abcde

하지만 실제 디버깅해서 돌리다보면

내부적으로는 이진탐색 과정이 나온다.

  • 영문자 비교인데 ko-KR 이.. 모르겠다 ㅎㅎ

a를 기준으로 비교한 결과값들이다.

a 와 c 의 결과와 a와 g의 비교 결과값이 같다.

  • 소문자와 대문자 차이
  • ASCII 기준 : A = 65, a = 95 → 97-65 = 32

a의 abcd에서 b의 위치에 대한 비교결과를 보면

  • b < z , c : 음수 (ex. 1-2 = -1)
  • b > a : 양수
profile
sally의 법칙을 따르는 bug Duck

0개의 댓글