Java에는 두 개의 문자열 값을 비교하여 int 형을 반환하는 메서드가 있다. 첫 번째는 compareTo 메서드이고, 두 번째는 compareToIgnoreCase 메서드이다. 두 메서드의 차이점은 비교할 때, 대소문자를 구분해서 비교하는지 여부이다. 이와 유사한 방식의 메서드로는 equals와 equalsIgnoreCase가 있다.
compareTo 메서드
compareTo 메서드는 두 개의 문자열 값이 필요하다. 기준 문자열과 비교 문자열이다. 아래 코드에서는 str1이 기준 문자열이며, str2가 비교 문자열이다. str1.compareTo(str2) 메서드의 반환 값은 자료형은 int 형이며 값은 31이다. 31이라는 숫자는 str1, str2 두 문자열의 char로 비교한 결과를 나타낸다.
"p"의 아스키 코드는 10진수로 112이며, "Q"의 아스키 코드는 10진수로 81이다. 따라서 31이 출력된다.
public class Main {
public static void main(String[] args) {
String str1 = "p";
String str2 = "Q";
// 31 출력
System.out.println(str1.compareTo(str2));
}
}
이번에는 비교하는 문자열의 길이를 다르게 해보자. str1 값은 "Qp", str2 값은 "Q"로 한다. 이전에 살펴본 예제에서는 두 개의 문자열의 char 타입으로 비교했었다. 아래 코드를 실행하면, 출력 값으로 1이 표시된다. 1은 비교하는 두 개의 문자열 길이가 다르므로 길이를 기준으로 "Qp"(2) - "Q"(1) 계산하여 나온 값이다.
public class Main {
public static void main(String[] args) {
String str1 = "Qp";
String str2 = "Q";
// 1 출력
System.out.println(str1.compareTo(str2));
}
}
compareToIgnoreCase 메서드
compareToIgnoreCase 메서드는 compareTo와 동일하게 두 개의 문자열을 비교하지만, 특별한 특징이 있다. 바로 대소문자를 구분하지 않는다는 것이다. 그래서 str1 값이 "p", str2 값이 "P"인 경우에 두 개의 문자열을 compareToIgnoreCase 메서드로 비교하면 결과 값으로는 0이 출력된다.
public class Main {
public static void main(String[] args) {
String str1 = "p";
String str2 = "P";
// 0 출력
System.out.println(str1.compareToIgnoreCase(str2));
}
}
'Java' 카테고리의 다른 글
Java 리스트(List) 컬렉션 종류 ArrayList, Vector, LinkedList (1) | 2019.04.22 |
---|---|
Maven pom.xml 파일에 Oracle OJDBC Dependency 추가 (2) | 2019.04.15 |
Effective Java 아이템 18. 상속보다는 컴포지션을 사용하라 (0) | 2019.04.14 |
Effective Java 아이템 17. 변경 가능성을 최소화하라 (0) | 2019.04.14 |
“” 또는 생성자를 사용하여 Java String 문자열 생성 (0) | 2019.04.14 |
댓글