개발 D/Java

[java] 문자열 비교

마음닝 2023. 12. 12. 17:29

백준 1181번을 푸는 도중

 

https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

compareTo() 함수를 알게되었다.

 

compareTo 함수는 문자열 비교와 숫자 비교가 가능하다.

 

숫자 비교는 1,0,-1 을 단순하게 return 해주는 반면

문자열 비교는 다양한 return 값을 보내준다.

 

숫자열 비교

public class Test{
    public static void main(String[] args){

        int x = 1;
        int y = 2;

        System.out.println(Integer.compare(x,y));  // -1
        System.out.println(Integer.compare(x,1));  //  0
        System.out.println(Integer.compare(x,2));  //  1
    }
}

 

 

문자열 비교

 

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
    }

}

출처: https://mine-it-record.tistory.com/133 [나만의 기록들:티스토리]

 

문자열은 반환값이 무궁무진하다.

 

이유

 

문자열을 비교할 때 

 

비교할 문자가 포함되어있다면 그 문자 길이의 차이값을 반환해준다

ex) "abcd" 와 "ab"를 비교 -> return -2

ex) "abcd" 와 "a" 를 비교 -> return -3

ex) "abcd" 와 "c" 를 비교 -> return -2

 

여기서 abcd 와 c 를 비교했는데 return -3 이 나와야 하지 않나?

-> compareTo는 같은 위치만 비교를 하기때문에 같은위치가 다를경우 아스키코드 값의 차이를 반환해준다.

a 와 c 를 비교 a = 97 , c = 99 -> a - c = -2

 

비교할 문자가 아예 다르다면

 

똑같이 아스키코드 값 차이를 반환해준다!

300x250
LIST

'개발 D > Java' 카테고리의 다른 글

[java] Java 다운로드 및 환경변수 설정  (0) 2023.12.19
[java] 최소 공배수 구하기(lcm)  (1) 2023.12.18
[java] 최대공약수 구하기(gcd)  (0) 2023.12.18
[java] Set  (1) 2023.12.13
[java] Comparator을 이용한 정렬  (0) 2023.12.13