자바의 compareTo 라는 함수는 두 개의 값을 비교하여 int 값으로 반환해주는 함수이다.
이 함수는 "문자열의 비교" 또는 "숫자의 비교" 두 방식이 존재하는데, 이 각각의 경우에 대해 알아보자.
1) 숫자형 비교
: 숫자형 비교는 Byte, Double, Integer, Float, Long 또는 Short 등을 비교할 수 있다.
반환되는 값은 아래 규칙을 따른다.
- 기준 값과 비교대상이 동일한 값일 경우: 0
- 기준 값이 비교대상 보다 작은 경우: -1
- 기준 값이 비교대상 보다 큰 경우: 1
2) 숫자형 비교 예시
Integer x = 7;
Integer y = 4;
Double a = 1.5;
Double b = 1.75;
System.out.println(x.compareTo(y));
System.out.println(y.compareTo(4));
System.out.println(a.compareTo(b));
결과값
1
0
-1
3) 문자열 비교
: 반횐되는 값은 아래의 규칙을 따른다.
- 기준 값과 비교대상이 사전순으로 동일한 경우: 0
- 기준 값이 비교대상보다 사전순으로 더 작은 경우: 음수
- 기준 값이 비교대상보다 사전순으로 더 큰 경우: 양수
이 때 주의해야할 점이 있다.
comparTo는 같은 위치의 문자만 비교하기 때문에, 첫번째 문자부터 순서대로 비교해서 다를 경우 바로 아스키값을 기준으로 비교처리를 하여 차이 만큼을 반환한다.
4) 문자열 비교 예시
String compStr = "Java";
String str1 = "Hello World!";
String str2 = "Java World!";
String str3 = "Java";
String str4 = "java";
System.out.println(str1 + ": " + compStr.compareTo(str1));
System.out.println(str2 + ": " + compStr.compareTo(str2));
System.out.println(str3 + ": " + compStr.compareTo(str3));
System.out.println(str4 + ": " + compStr.compareTo(str4));
결과값
결과값을 보면, Java와 java를 비교한 경우 -32를 반환하였다.
이는 아스키코드 값으로 대문자 J와 소문자 j의 차이인 32를 반환한 것을 알 수 있다.
[reference]
https://conanglog.tistory.com/219
https://velog.io/@wnajsldkf/compareTo로-값문자열숫자-비교하기
'Java > Java' 카테고리의 다른 글
[Java] 추상 클래스(Abstract Class)란? (0) | 2025.03.14 |
---|---|
[Java] 문자열에서 문자 추출 charAt() 함수 (0) | 2025.03.14 |
[Java] replace, replaceAll 함수 (0) | 2025.03.14 |
[Java] 자바 Array를 List로, List를 Array로 변환하기 (0) | 2025.03.14 |
[Java] 자바 특정 문자열 포함 여부 확인 및 위치 찾기(contains, indexOf) (0) | 2025.03.14 |