안녕하세요. 제임스 입니다.
이번에는 compareTo() 함수와 compareToIngnoreCase() 함수에 대해 정리해 보겠습니다.
■ int compareTo(String str)
인자값으로 비교 대상 String 값을 입력 받습니다.
리턴되는 응답값은 비교 값이 동일할 경우 0 으로, 다를 경우 음의 정수 또는 양의 정수 값으로 표현됩니다. 정수값으로 표현된다는 말이 어려우시죠? 예문으로 확인 해보겠습니다.
String str = "abc";
System.out.println("result 1 ==> "+str.compareTo("abc"));
System.out.println("result 2 ==> "+str.compareTo("bc"));
System.out.println("result 3 ==> "+str.compareTo("c"));
System.out.println("result 4 ==> "+str.compareTo("abcabc"));
System.out.println("result 5 ==> "+str.compareTo("abcabcd"));
위와 같이 "abc" 라는 String 값을 여러 문자열과 비교 해봤습니다.
결과는 아래와 같습니다.
result 1 ==> 0
result 2 ==> -1
result 3 ==> -2
result 4 ==> -3
result 5 ==> -4
1번의 경우 동일한 String 값이니 당연히 0 이라는 값을 리턴 합니다.
2번의 경우 "bc" 만 같고 "a" 가 빠져 한자 차이로 다른 값이 되었습니다. 그래서 -1 값이 리턴 됩니다. 한자리 차이라는 의미죠.
3번의 경우 "c" 만 같고 "ab" 가 빠져 두자 차이로 다른 값이 되었습니다. -2 값이 리턴 되었구요, 역시 두자 차이라는 의미입니다.
4번의 경우 "abc" 가 두번 반복 되었지만 문자열 비교로 봤을때는 전혀 다른 문자열입니다. 비교대상 문자열보다 "abc" 라는 문자열만큼 3자리가 길어서 -3 이라는 값이 리턴 되었습니다.
String str = "abc";
System.out.println("result 6 ==> "+str.compareTo("ABC"));
이번에는 소문자 "abc"를 대문자 "ABC"와 비교해봤습니다.
결과는 아래와 같습니다.
result 6 ==> 32
앞선 예제와 달리 32 라는 결과 값이 나왔습니다.
왜 이런 값이 나왔을까요?
이 결과 값을 이해 하려면 ASCII 코드에 대해 알아야 하는데요. 이 ASCII 코드는 문자를 컴퓨터가 이해 할 수 있는 숫자 형태로 변환한 코드 값이라고 이해 하시면 됩니다. (자세한건 차후에 다루도록 하겠습니다)
이 ASCII 코드 상에서 "a" 와 "A" 의 값을 확인해 보겠습니다.
붉은 색으로 칠해진 부분의 Decimal 값을 참조 하시면 됩니다.
"A" 값은 65, "a" 값은 97 입니다. 이 차이가 32 인데요.
비교 대상인 대문자 "ABC" 가 "abc" 보다 32 만큼 크기 때문에 양의 정수 값으로 리턴 되었습니다.
그렇다면 반대로 비교 대상값이 소문자 "acb" 라면 어떤 결과 값이 나올까요?
String str = "ABC";
System.out.println("result 7 ==> "+str.compareTo("abc"));
result 7 ==> -32
결과는 보시는 바와 같이 -32, 즉, 음의 정수 값으로 나오게 됩니다.
■ int compareToIgnoreCase(String str)
앞서 설명드린 compareTo() 함수와 거의 모든 것이 같습니다. 단, 함수 명에서도 알수 있듯이 Ignore Case!!! 즉, 대소문자를 무시한다는 의미 입니다. 그럼 예제로 확인해보겠습니다.
String str = "ABC";
System.out.println("result 8 ==> "+str.compareToIgnoreCase("abc"));
System.out.println("result 9 ==> "+str.compareToIgnoreCase("aBc"));
result 8 ==> 0
result 9 ==> 0
결과 값은 대소문자 무시하고 결과 값을 가져 옵니다.
둘다 상당히 유용한 Java String 관련 함수 들입니다.
잘 사용하면 개발에 참 유용하게 사용할 수 있습니다.
▼ 도움이 되셨다면 로그인이 필요 없는 ▼
▼ 하트 클릭 한번 부탁 드립니다 ▼
감사합니다 :D
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java startsWith(), endsWith() (7) | 2017.11.23 |
---|---|
[ 자바 코딩 ] Java replace() vs replaceAll() (7) | 2017.11.20 |
[ 자바 코딩 ] 자바 charAt(), indexOf(), lastIndexOf(), length() (6) | 2017.11.14 |
[자바 코딩] 자바 랜덤 함수 (4) | 2017.09.29 |
[자바 코딩] 배열 정렬 Arrays.sort() (7) | 2017.09.28 |