[JAVA] 문자열 비교방법

|

프로그래밍을 하다보면 문자열을 비교하는 일이 굉장히 많다.

그런데 이 문자열을 비교하는 방법도 여러가지가 존재하는지라 제대로 찾아보지 않고

시도하다보면 이것저것 혼용해서 사용하고 이로인해서 원치않던 결과가 나타나기도 한다.

이번에는 이러한 문자열 비교방법의 종류와 실질적으로 이러한 방법들이

어떠한 방식으로 비교를 하는지 알아보도록 하겠다.


* == 연산자의 비교

먼저 가장 쉽게 사용하는 == 연산자를 알아보도록 하겠다.

== 연산자의 경우 실질적인 문자열의 비교는 이루어지지 않는다. 

문자열 변수(String)에 문자열을 할당할 때, 기존에 이미 동일한 문자열이 들어간 

메모리의 객체가 존재한다면 그 메모리의 주소값을 변수에 할당하게 된다. 

그리고 == 연산자는 이러한 변수에 할당된 주소값이 동일한 것인지 확인을 통해 비교를 한다.

실질적인 문자열의 비교가 아니기 때문에 문제가 발생할 소지가 다분한 방법이다. 

실제로 수행했던 플젝에서 구분없이 각종 비교방법을 사용하다가 

이 방법이 문제가 되었던 경험이 있다.

 
 

* equals 메소드에 의한 비교

문자열의 실제 char 값을 비교하는 메소드이다. 2개의 String 오브젝트가 같은 

char 데이터를 보유할 경우 true를 반환한다.



* compareTo 메소드에 의한 비교

compareTo 메소드의 경우에 equals 메소드와 비슷한 과정을 거친다. 

차이점이라면 유니코드를 기준으로 문자표에서 순서를 비교하므로 기준보다 

앞에 존재하면 음수를, 같으면 0, 더 뒤에 있으면 양수를 반환하는 메소드이다.



확실한 정의를 찾아보는 과정 없이 비교 방법을 사용하다 보니 적절치 못한

메소드 혹은 연산자를 사용한 것 같다.

'JAVA' 카테고리의 다른 글

[JAVA] javac 및 java 실행시 주의사항  (1) 2011.11.01
[JAVA] log4j의 설정 및 사용  (0) 2010.12.10
And