문자열의 비교(equals 와 equalsIgnoreCase)

 

두 문자열을 비교할때 잘못 알고 사용하는 것중의 하나가 문자열 동등비교를 == 로 한다는 것이다.
이것은 너무나 위험한 일이다.
언뜻 보기에 버그로 보이지 않고 컴파일 시에도 에러가 발생하지 않는다.
하지만 이것은 찾아내기 어려운 버그가 될수가 있으며 치명적인 결과가 나타날수도 있다.
왜냐면 문자열의 비교에 있어서 == 은 두 문자열이 단지 같은 저장공간에 있는가 만을 비교하기 때문이다.

String A = “가나다”;
String B = “가나다”;

if (A == B )       <---  (X) if (A.equals(B))    <---  (O) 그렇기 때문에 같은 두 문자열 "유징테크" 와 "유징테크" 일지라도 이것을 저장시킬때 다른 저장공간에 저장이 되어 있다면 이 둘의 동등비교시 == 을 사용하게 되면 이것은 false 를 반환하게 된다. 그러므로 문자열을 비교할때는 반드시 equals 를 사용해야 할 것이다. 또한 equals 와 같은 기능으로 equalsIgnoreCase 가 있습니다. 이것은 두 문자열 비교시 대소문자를 비교하지 않는다는 기능도 있지만 두 문자열의 비교시 우선 두 문자열의 길이가 같은지를 먼저 확인하게 됩니다. 두 문자열의 길이가 다르다면 문자열이 같지 않은것이 되죠..... 그렇기 때문에 두 문자열이 길이부터가 다르다면 일일이 한 바이트씩 비교해 보지 않고도 false 를 반환해 버립니다. 따라서 처리속도가 그만큼 빨라지게 되는거죠. 문자열 비교시 위의 장단점을 잘 활용해 효과적인 프로그래밍을 하시길 바랍니다.!! ^^  

This entry was posted in Java/JSP and tagged , , , . Bookmark the permalink.

댓글 남기기