Java/Java

[Java] compareTo 함수

mingmongs 2025. 3. 14. 11:18

title

자바의 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));

 

결과값

result

결과값을 보면, Java와 java를 비교한 경우 -32를 반환하였다.
이는 아스키코드 값으로 대문자 J와 소문자 j의 차이인 32를 반환한 것을 알 수 있다.

 

 

[reference]
https://conanglog.tistory.com/219
https://velog.io/@wnajsldkf/compareTo로-값문자열숫자-비교하기