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

+ Recent posts