Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[자바/Java] - compareTo() (문자열, 숫자 비교) 본문

Study/Java

[자바/Java] - compareTo() (문자열, 숫자 비교)

luke-king 2024. 4. 17. 13:32

 

 


compareTo()

  • compareTo() 함수는 두 개의 값을 비교해 int 값으로 반환해 주는 함수이다.
  • compareTo() 함수에는 "문자열 비교", "숫자 비교" 두 방식이 있다.

 

숫자 비교

public class Main {

    public static void main(String[] args) {

        Integer a = 5;
        Integer b = 3;

        System.out.println(a.compareTo(b)); // 결과 : 1 기준값 a가 비교값 보다 클 경우. 
        System.out.println(a.compareTo(5)); // 결과 : 0 기준값 a와 비교값 이 같을 경우.
        System.out.println(a.compareTo(7)); // 결과 : -1 기준값 a가 비교값 보다 작을 경우.


    }

}

 

1. 실행 결과 : 기준값 a가 비교값 보다 클 경우.          1

2. 실행 결과 : 기준값 a와 비교값 이 같을 경우.          0

3. 실행 결과 : 기준값 a가 비교값 보다 작을 경우.     -1

 

 

코드를 보면 변수 타입을 Integer로 선언했는데, 만약 int타입을 원한다면 다음과 같은 코드로 사용하면 된다.

int a = 5;
int b = 3;

System.out.println(Integer.compare(c, d)); // 결과: 1

 

 

 

 

 

문자열 비교

 

public class Main {

    public static void main(String[] args) {

        String str = "abc";

        System.out.println(str.compareTo("abc")); //  0
        System.out.println(str.compareTo("a"));   //  2
        System.out.println(str.compareTo("ab"));  //  1
        System.out.println(str.compareTo("ac"));  // -1
        System.out.println(str.compareTo(""));    //  3 
        System.out.println(str.compareTo("d"));   // -3 아스키 코드 a=96 d=99 a-d = -3리턴


    }

}

 

비교대상에 문자열이 포함되어있을 경우

str.compareTo("a")의 결과가 2로 나오는 이유는?

 

str 값에 있는 "abc"에 a가 포함되어 있어 기준값에 비교대상이 포함되어 있을 경우 서로의 문자열 길이의 차이값을 리턴해주기 때문이다.

 

  • "abc"(3) - "abc" = 0
  • "abc"(3) - "a" = 2
  • "abc"(3) - " " = 3

이런식의 결과 값이 나오는 것이다.

 

마지막 코드인 str.compareTo("d")의 결과 값은 -3이다 왜 -3 일까?

compareTo는 같은 위치의 문자만 비교하고 첫번째 문자부터 순서대로 비교해 다를 경우 아스키값을 기준으로 처리한다.

우선 str 변수에 "abc" 가 있는 a의 아스키코드 값은 96이다 다음 비교할 d의 값은 99이다.

a(96) - b(99) = -3의 결과 값이 나오게 되는 것이다.