자바 이론

compareTo()?

koyuchang 2021. 6. 8. 10:38

compareTo는 두 가지로 나뉜다.

1. 숫자 비교

2. 문자 비교

 

우선 숫자 비교부터 해보겠다.  아래 실행 결과처럼 기준 숫자 10을 가지고 4,10,12와 비교를 수행하면,

각각 1,0,-1을 확인할 수 있다. 이렇게 숫자형은 간단하게 숫자의 대소가 확인이 가능하다.

 

 

그렇다면 문자는 어떻게 될까?

아래 사진처럼 str이 "abc"이고, 비교 대상 문자들이 str의 구성요소를 포함하고 있다면, 길이를 비교하여 값을 리턴해준다.

 

 

 

여기서 매우 중요한 사실이 있다. 위의 예시 같은 경우 비교 문자들이 str의 앞부분은 같다는 것을 알 수 있다.

그렇다면 아예 다른 'c'부터 시작하는 문자로 비교해보면 어떻게 될까?

결과는 아래 사진처럼 -2가 출력된것을 확인할 수 있다. 그 이유로는 compareTo는 각 문자의 같은 위치에 있는 값끼리 비교하기 때문이다. a 랑 c는 다름으로 아스키 값 차이인 -2를 출력해준다.

 

 

이와 같은 사실을 통해 알고리즘 풀이때 매우 유용하게 사용될 수 있다. 문자열 길이 비교, 문자열 길이가 같다면 사전 순으로 비교할 때 매우 유용할 것 같다.