728x90
compareTo()
// 숫자형 비교
int compareTo(NumberSubClass referenceName)
// 문자열 비교
int compareTo(String anotherString)
- compareTo()는 두개의 값을 비교하여 int 값으로 반환해 준다.
- compareTo()는 위에서 적어둔 것 처럼 문자열 비교와 숫자 비교 두가지 방식이 존대한다.
숫자형 비교
- 숫자형 비교는 단순히 크다(1), 같다(0), 작다(-1)을 결과값으로 리턴한다.
- 숫자형 비교는 Byte, Double, Integer, Float, Long, Short 등을 비교 할 수 있다.
- int로 선언해서 사용할 때는 Integer.compare(기준값, 비교값)으로 사용.
public class Main {
public static void main(String[] args) {
Integer a = 3;
Integer b = 4;
Double c = 1.0;
int x = 5;
int y = 6;
System.out.println( a.compareTo(b) ); // -1
System.out.println( a.compareTo(3) ); // 0
System.out.println( a.compareTo(2) ); // 1
System.out.println( c.compareTo(2.7) ); // -1
System.out.println(Integer.compare(x, y)); // -1
}
}
문자열 비교
- 문자열 비교의 경우 같은 문자열은 숫자와 동일하게 0을 리턴
- 문자열 비교는 숫자형 비교와 결과값이 다르므로 예제로 설명
비교 대상에 동일한 문자열이 포함 되어 있는 경우
public class Main {
public static void main(String[] args) {
String str = "abcd";
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
}
}
str.compareTo("ab") / str.compareTo("a")
- 기준값의 앞자리부터 일치하는 문자열이 포함된 경우 (기준문자열길이-비교대상문자열길이) 리턴
ex) "abcd"(4) - "ab"(2) = 2 / "abcd"(4) - "a"(1) = 3 리턴
str.compareTo("c")
- 비교가 불가능한 지점의 각 문자열의 아스키값을 기준으로 비교 아스키 코드값의 차이값을 리턴
* compareTo는 같은 위치의 문자를 비교한다.
예제에서는 첫번째 위치에서 비교가 실패했기 때문에 "a"와 "c"의 차이값을 리턴한다. (a=97,c=99 / a-c=-2)
비교 대상과 문자열이 전혀 다른 경우
public class Main {
public static void main(String[] args) {
String str = "abcd";
System.out.println( str.compareTo("zefd") ); // -25
System.out.println( str.compareTo("ABCD") ); // 32
}
}
str.compareTo("zefd")
- 위와 같은 논리로 첫 문자부터 다르므로 "a"와 "z"의 아스키코드 차이값 리턴
ex) a=97, z=122 / 97-122=-25
str.compareTo("ABCD")
- "a"와 "A"의 아스키코드 차이값 리턴
ex) a=97, A=65 / 97-65=32
728x90
'Java & Spring' 카테고리의 다른 글
[JAVA] contains() 사용법. 특정 문자열 포함 여부 (0) | 2022.03.19 |
---|---|
[JAVA] compareToIgnoreCase() 문자열 대소문자 구분 없이 비교 (0) | 2022.03.18 |
[JAVA] rint() 사용법 (0) | 2022.03.16 |
[JAVA] round() 사용법 (0) | 2022.03.15 |
[JAVA] split() 사용법. 문자열 나누기 (0) | 2022.03.14 |