compareTo()
- 숫자 비교 int compareTo(NumberSubClass referenceName) 크다(1), 같다(0), 작다(-1)
- 문자열 비교 int compareTo(String anotherString) 같다(0), 그 외 양수/음수값들
1. 숫자 비교
public class CompareToTest{
public static void main(String[] args){
Integer x = 3;
Integer y = 4;
Double z = 1.0;
System.out.println( x.compareTo(y) ); // -1
System.out.println( x.compareTo(3) ); // 0
System.out.println( x.compareTo(2) ); // 1
System.out.println( z.compareTo(2.7) ); // -1
}
}
Byte, Double, Integer, Float, Long, Short 등을 비교할 수 있다.
그리고 같은 타입끼리만 비교가 가능하다.(x.compareTo(3.0) 불가능)
✔️ 참고
원시 타입(int 등..)을 비교하려면 아래와 같은 방식으로 할 수 있다.
int x = 4;
int y = 5;
Integer.compare(x,y);
2. 문자열 비교
public class CompareToTest{
public static void main(String[] args){
String str = "abcd";
// 1) 비교대상에 문자열이 포함되어있을 경우
System.out.println( str.compareTo("abcd") ); // 0 (같은 경우는 숫자나 문자나 0을 리턴)
System.out.println( str.compareTo("ab") ); // 2
System.out.println( str.compareTo("a") ); // 3
System.out.println( str.compareTo("c") ); // -2
System.out.println( "".compareTo(str) ); // -4
// 2) 비교대상과 전혀 다른 문자열인 경우
System.out.println( str.compareTo("zefd") ); // -25
System.out.println( str.compareTo("zEFd") ); // -25
System.out.println( str.compareTo("ABCD") ); // 32
System.out.println( str.compareTo("abcd") ); // 0
}
}
- 첫 문자부터 순서대로 같은 위치의 문자를 아스키 코드값을 기준으로 비교한다. (아스키 코드값이 기준이므로 대소문자를 구분한다.)
- 비교 결과 다르다면, 해당 위치 두 문자의 아스키 코드값의 차이를 리턴한다.
- 비교 결과가 다르지 않으면, 문자열이 짧을 수록 사전순에서 빠르므로 두 문자열의 길이 차이를 반환한다.
✔️ 참고
대소문자를 구분하지 않고 비교해주는 함수 compareToIgnorecase() 가 존재한다.
'JAVA > Crums' 카테고리의 다른 글
Java + Spring vs Node.JS + Express (0) | 2022.12.20 |
---|---|
어떤 자바를 선택할 것인가에 대하여 (0) | 2022.12.20 |
제네릭과 와일드카드에 대한 정리글 (0) | 2022.11.30 |
String | StringTokenizer | StringBuffer | StringBuilder (0) | 2022.11.09 |