Operating System/JAVA

[JAVA] 문자열의 비교

Growing DBA 2022. 4. 18. 08:47
728x90
반응형

* 두 문자열을 비교할 때는 비교 연산자 '=='대신 equals()라는 메서드를 사용해야 한다. 비교 연산자는 두 문자열이 완전히 같은 것인지 비교할 뿐이므로 문자열의 내용이 같은지 비교하기 위해서는 equals()를 사용하는 것이다. eqlals()는 비교하는 두 문자열이 같으면 true를 다르면 false를 반환한다.


ex)
public static void main(String[] args) {
String str1 = "abc";
String str2 = new String("abc");
System.out.printf("\"abc\"==\"abc\" ? %b%n", "abc"=="abc");
System.out.printf(" str1==\"abc\" ? %b%n",    str1=="abc");
System.out.printf(" str2==\"abc\" ? %b%n",    str2=="abc");
System.out.printf("str1.equals(\"abc\") ? %b%n", str1.equals("abc"));
System.out.printf("str2.equals(\"abc\") ? %b%n", str2.equals("abc")); 
System.out.printf("str2.equals(\"ABC\") ? %b%n", str2.equals("ABC"));
System.out.printf("str2.equalsIgnoreCase(\"ABC\") ? %b%n", str2.equalsIgnoreCase("ABC"));
}
결과)
"abc"=="abc" ? true
 str1=="abc" ? true
 str2=="abc" ? false
str1.equals("abc") ? true
str2.equals("abc") ? true
str2.equals("ABC") ? false
str2.equalsIgnoreCase("ABC") ? true

* str2와 "abc"의 내용이 같은데도 '=='로 비교하면 false를 결과로 얻는다. 내용은 같지만 서로 다른 객체라서 그렇다. 그러나 eqlals()는 객체가 달라도 내용이 같으면 true를 반환한다. 그래서 문자열을 비교할 때는 항상 eqals()를 사용해야 한다는 것을 기억하자. 

* 만일 대소문자를 구별하지 않고 비교하고 싶으면 equals() 대신 equalsIgnoreCase()를 사용하면 된다. 

728x90
반응형