출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]

public int compareTo(String anotherString)

2개의 문자열을 비교하여(A coomparTo B) 같으면 0, A가 B보다 크면 양수, 적으면음수를 반환

맨 첫자리부터 차례대로 비교한다.

 

 (역주: "A"는 feff0041, "B"는 feff0042)
 비교는 스트링내의 각각의 문자의 Unicode 값에 근거해 행해집니다.
 String 객체에 의해 나타내지는 문자열이, 인자로 전달 받은 스트링의 문자열과 사전적으로 비교됩니다.
 String 객체가 사전적으로, 전달받은 스트링보다 전에 있는 경우는, 결과는 음의 정수가 됩니다.

 

equals(Object) 메소드가 true 를 돌려줄 때, compareTo 는 0 을 돌려줍니다.

"사전적의 순서"의 정의는 다음과 같습니다.
2 개의 스트링이 다르다고 한다면,
서로 다른 문자가 문자열 중에 있거나,
2 개의 스트링의 길이가 다르거나,
혹은 그 두 경우 다 해당되는 상황입니다.

 

만일 하나 또는 그 이상의 위치 (index) 에서 문자가 서로 다를 때,
index 중 가장 작은 숫자를 k 라고 가정합니다.
k 위치에 있는 두 문자를 < 연산자 로 비교하면, 두 문자중 하나는 다른 문자보다 작습니다.
이 문자를 가진 문자열을 사전적으로 (역주: "A"가 "B"보다 앞에 있는것 처럼) 앞에 있다고 합니다.
이 경우, compareTo 는 2 개의 스트링에서 위치 k 에 있는 2 개의 문자의 값의 차이를 돌려줍니다.
식으로 표현하면 다음과 같습니다.

this.charAt(k) - anotherString.charAt(k)

 


유효한 모든 인덱스 위치에 있어서의 문자가 같은 경우는, 짧은 길이의 스트링이 사전적으로 앞이 됩니다.
이 경우 compareTo 는 스트링의 길이의 차이를 돌려줍니다. 식으로 표현하면 다음과 같습니다.

 * this.length() - anotherString.length()

정의: compareTo in interface Comparable<string></string>
파라미터: 'anotherString - 비교 대상의 String'
반환값
인수 스트링이 스트링과 동일한 경우는 0.
스트링이 주어진 스트링보다 사전식에서 작은 경우는 음수.
주어진 스트링보다 스트링이 사전식에서 큰 경우는 양수.
 

 

package Chapter15_Overriding;
 
public class CompareTo {
 
    public static void main(String[] args) {
       
        String a = "ABC";
        String b = "ABC";
        String c = "BCD";
        String d = "ABCDEF";
       
        System.out.println(a.compareTo(b));
        //출력결과  : 0
       
        System.out.println(a.compareTo(c));
        //출력결과 : -1
       
        System.out.println(a.compareTo(d));
        //출력결과 : -3
       
    }
 
}
 

+ Recent posts