[Java] String의 대소비교

이대건·2024년 2월 17일

Java

목록 보기
9/17
post-thumbnail

문자열은 객체로 대소비교시 compareTo 매소드가 호출된다.

compareTo(String anothorString)

  • this.charAt(k) - anotherString.charAt(k)
  • 문자열 각 인덱스의 char간 비교가 이루어지는 함수
  • 숫자가 유니코드로 변환되어 뺄셈이 되기에 얼핏보면 정수형으로 변환하지 않고 될 것 같다.
  • 결론부터 얘기하면 꼭 정수형으로 변환한 뒤 대소비교를 해야한다.

문자열의 대소비교

	String s1 = "124";
    String s2 = "224"; 
  • '1' - '2' < 0 이므로 s1 < s2가 된다.
  • 위 결과는 정수형으로 비교했을때와 동일하다.
  • 하지만 다음과 같은 이유로 사용하면 안된다.

예외

	String s1 = "123";
    String s2 = "0124";
    
  • '0' - '1' < 0 이므로 s1 > s2가 된다.
  • 위 결과는 정수형으로 비교했을때 결과인 s1 < s2와 다르다.

결론

  • 숫자의 문자열 타입을 비교할때는 꼭 정수형으로 비교하자
  • 단순 대소비교 뿐만 아니라 PriorityQueue와 같이 compareTo를 호출하는 모든 경우에 사용하면 안된다.
profile
일낸머스크

0개의 댓글