Java String compareTo() 마스터: 문법, 활용 케이스, 실전 예제
Java에서 compareTo()란?
compareTo() 메서드는 두 문자열을 사전순으로 비교합니다. 각 문자가 Unicode 값으로 변환되어 비교되며, 상대적 순서를 나타내는 int를 반환합니다. 문자열이 동일하면 0 반환, 그렇지 않으면 첫 번째 문자열이 앞서면 음수, 뒤따르면 양수.
이 메서드는 java.lang.Comparable 인터페이스에 정의되어 있습니다.
문법
public int compareTo(String str)
매개변수: str — 호출 문자열과 비교할 문자열.
반환값: 사전순에 따라 음수, 0, 양수인 int.
< 0 — 호출 문자열이 사전순으로 앞섬.
== 0 — 두 문자열 동일.
> 0 — 인자 문자열이 사전순으로 앞섬.
예제 1: 기본 사용법
public class SampleString {
public static void main(String[] args) {
String str = "a";
System.out.println("\"a\"를 \"b\"와 비교: " + str.compareTo("b"));
str = "b";
System.out.println("\"b\"를 \"a\"와 비교: " + str.compareTo("a"));
str = "b";
System.out.println("\"b\"를 \"b\"와 비교: " + str.compareTo("b"));
}
}
출력
- "a"를 "b"와 비교: -1
- "b"를 "a"와 비교: 1
- "b"를 "b"와 비교: 0
설명:
- "a"가 "b"보다 알파벳순으로 앞서므로 음수 결과.
- "b"가 "a"보다 뒤따르므로 양수 결과.
- 동일 문자열은 0 산출.
예제 2: 대소문자 구분 vs 무시
public class SampleString {
public static void main(String[] args) {
String str = "RockStar";
System.out.println("대소문자 구분 비교 'rockstar': " + str.compareTo("rockstar"));
System.out.println("대소문자 무시 비교 'ROCKSTAR': " + str.compareToIgnoreCase("ROCKSTAR"));
}
}
출력
- 대소문자 구분 비교 "rockstar": -32
- 대소문자 무시 비교 "ROCKSTAR": 0
compareTo() 사용 시기
이름 정렬이나 사전 조회 등 문자열의 자연스러운(사전순) 정렬이 필요할 때 compareTo() 사용. 이 메서드는 String.compareToIgnoreCase()와 같은 규칙을 따르지만 대소문자 구분.
대표적 시나리오:
Collections.sort()로 String 객체 컬렉션 정렬.
- 문자열 비교 필요한 커스텀 클래스에
Comparable 구현.
- 정렬된 문자열 배열에서 이진 검색 수행.
예제 3: 실전 비교
public class CompareDemo {
public static void main(String[] args) {
String s1 = "Guru1";
String s2 = "Guru2";
System.out.println("문자열 1: " + s1);
System.out.println("문자열 2: " + s2);
int result = s1.compareTo(s2);
if (result < 0) {
System.out.println("\"" + s1 + "\"은 사전순으로 \"" + s2 + "\"보다 앞섭니다");
} else if (result == 0) {
System.out.println("\"" + s1 + "\"은 사전순으로 \"" + s2 + "\"와 같습니다");
} else {
System.out.println("\"" + s1 + "\"은 사전순으로 \"" + s2 + "\"보다 뒤입니다");
}
}
}
출력
- 문자열 1: Guru1
- 문자열 2: Guru2
- "Guru1"은 사전순으로 "Guru2"보다 앞섭니다