Programming/JAVA
compareTo
dev?
2022. 5. 9. 20:26
반응형
compareTo()
- 2개의 값을비교하여 int형으로 결과를 반환해주는 함수이다.
- 문자열의 비교 / 숫자의 비교 방식이 존재한다.
기준값.compareTo(비교값)
1. 숫자형 비교
기준값 = 비교대상 0 |
기준값 < 비교대상 -1 |
기준값 > 비교대상 1 |
/* Wrapper Class인 경우*/
Integer A = 1;
Integer B = 2;
System.out.println( A.compareTo(B) ); // -1 :작다
System.out.println( A.compareTo(1) ); // 0 :같다
System.out.println( A.compareTo(2) ); // 1 :크다
/* int 대상인 경우*/
int A = 1;
int B = 2;
Integer.compare(A,B);
2. 문자열 비교
1) 비교대상에 문자열이 포함되어있을경우
// 1) 비교대상에 문자열이 포함되어있을 경우
String str = "abcd";
System.out.println( str.compareTo("abcd") ); // 결과: 0 (기준값 == 비교대상)
String str = "abcd";
System.out.println( str.compareTo("ab") ); // 결과: 2
System.out.println( str.compareTo("a") ); // 결과: 3
※ str.compareTo("ab") 값이 2가 나온 이유
= 기준값에 비교대상이 포함되어있을 경우 서로의 문자열 길이의 차이값을 리턴해주기 때문이다.
("abcd"에 "ab"가 포함되어 있으므로 문자열 길이의 차이값인 '2'가 나온다)
"abcd" - "ab" = 2 4 - 2 = 2 |
"abcd" - "a" = 3 4 - 1 = 3 |
String str = "abcd";
System.out.println( str.compareTo("c") ); // 결과: -2
System.out.println( "".compareTo(str) ); // 결과: -4
※ str.compareTo("c") 값이 -2가 나온 이유
= comparTo는 같은 위치의 문자만 비교하기 때문에
맨 앞('a')에서 불일치 하기 때문에 아스키값으로 비교처리를 한다.
('a'의 아스키코드 값은 97, 'c'의 아스키코드 값은 99 이므로 차이인 -2가 리턴된다.)
2) 비교대상과 전혀 다른 문자열인 경우
// 2) 비교대상과 전혀 다른 문자열인 경우
String str = "abcd";
System.out.println( str.compareTo("zefd") ); // -25
System.out.println( str.compareTo("zEFd") ); // -25
System.out.println( str.compareTo("ABCD") ); // 32
https://mine-it-record.tistory.com/133
https://yuja-kong.tistory.com/172
반응형