안녕하세요. 제임스 입니다. 


이번에는 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


블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,