개발/Java
[Java] String 문자열 비교 시 equals, equalsIngoreCase
Reimu.
2016. 6. 10. 23:10
반응형
프로그래밍을 처음 배울때 if문을 배우면서 숫자 비교 같은 것을 배우게 됩니다.
그러다가 응용 단계로 가면 문자열 비교를 배우게 되죠.
아마 대부분 아래와 같이 쓰지 않았었나 생각됩니다.. (물론 저도 포함 ^^;;)
String str = "abc"; String input = "abc"; if(str == input) { system.out,println("true"); } else { system.out,println("false"); }
결과는, 당연히 false가 찍히겠죠. false가 찍히는 원인은 문자열 변수마다 가지고 있는 hashCode가 다르기 때문입니다.
따라서, String 비교시에는 아래와 같이 equals를 사용하면 원하는 결과인 true를 얻을 수 있습니다.
if(str.equals(input) { system.out.println("true"); } else { system.out.println("false"); }
하지만, equalsIgnoreCase라는 것이 있습니다. equals같은 경우에는 대소문자 구분을 철저히 하지만,
equalsIgnoreCase 같은 경우 대소문자를 구분하지 않습니다. 클라이언트에서 입력받은 String을 비교할 때 유용하게 쓰이겠죠.
아래와 같이 말입니다.
결과는 true가 찍힙니다.
String str = "abc" String input = "AbC"; if(str.equalsIgnoreCase(input)) { system.out.println("true"); } else { system.out.println("false"); }
보통은 대소문자 구분 처리할때 toLowerCase(모두 소문자 변환), toUpperCase(모두 대문자 변환) 등을 이용하여 사용하지만,
equalsIgnoreCase를 사용하면, 한방에 해결할 수 있어서 좋은 것 같습니다.
반응형