'자바 compareTo()'에 해당되는 글 2건



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


최근 Java Number 관련 함수에 대해 계속해서 알아 보고 있습니다.

이번에는 compareTo() 라는 함수에 대해 이야기 해보겠습니다. 



compareTo() 함수는 함수를 호출한 Number 객체를 인자값과 비교를 합니다.

Byte, Double, Integer, Float, Long 또는 Short 등을 비교 할 수 있습니다. 단, 서로 다른 형을 비교 할 수는 없으므로 함수를 호출하는 인수와 비교대상이 되는 Number 객체는 동일한 형이어야 합니다. 


예를 들면 Integer 는 Integer 형 인자값과 비교가 가능하지만, Long 형 인자 값을과는 비교가 불가능 합니다. 



Syntax


public int compareTo( NumberSubClass referenceName )



Parameters


referenceName 은 Byte, Double, Integer, Float, Long 또는 Short 등이 될수 있습니다. 



Return Value


▶ 비교 대상이 동일한 값일 경우 0

▶ 비교 대상이 작은 경우 -1

▶ 비교 대상이 큰 경우 1 

을 반환합니다. 



Sample Code


1
2
3
4
5
6
7
Integer x = 7;
          
System.out.println(x.compareTo(3));
        
System.out.println(x.compareTo(7));
        
System.out.println(x.compareTo(77));
cs


비교 대상은 Integer 형인 7 입니다. 


첫번째 7과 3의 비교인데요... 당연히 비교대상인 7이 인자값인 3보다 크죠. 

예상되는 결과 값은 1 입니다. 


두번째는 7과 7의 비교입니다. 당연히 동일한 값입니다.

예상 결과 값은 0 입니다. 


세번째 7과 77의 비교! 인자값 77보다 작습니다. 

예상 결과 값은 -1이 됩니다. 



결과는 어떨까요? 


1

0

-1


맞습니다. 예상대로 결과 값이 리턴 됩니다. 



이번에는 Double 형으로 테스트 해보겠습니다. 

1
2
3
4
5
6
7
Double y = 12.5;
        
System.out.println(y.compareTo(3.0));
        
System.out.println(y.compareTo(12.5));
        
System.out.println(y.compareTo(27.8));
cs


결과가 예상이 되시나요? 


1

0

-1


위와 같은 결과 값이 나옵니다. 

예상하신 값과 동일 한가요? ^^




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

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

,



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


이번에는 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 등의 프로그래밍 언어를 소개 합니다.

,