컴퓨터공부/Kotlin & Java

String의 null 체크 필요 없이 문자열이 같은지 비교하기(Objects.equals())

achivenKakao 2019. 4. 23. 19:21

 

String문 비교할 때, 아래와 같은 구문을 쉽게 볼 수 있다.

    1. if (str != null && str.equals("true")) { }

    2. if (str != null && "true".equals(str)) { }
    3. if ( (str1 != null && str2 != null) && str1.equals(str2)) {}

1번에 비해서 2번이 낮다, 그리고 변수가 2개가 되면 3번이 된다.

 

뭘 어떻게 봐도.. 구리다..

 

이럴 땐 아래와 같이 쓰면 된다. 쉽고 간단하고 안전하다.

    if( Objects.equals(str1, str2)) { }

 

 

원형 : 

    public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }

 

+

 

출처 : 

 

How do I compare strings in Java?

 

https://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java

 

 

// These two have the same value
new String("test").equals("test") // --> true 

// ... but they are not the same object
new String("test") == "test" // --> false 

// ... neither are these
new String("test") == new String("test") // --> false 

// ... but these are because literals are interned by 
// the compiler and thus refer to the same object
"test" == "test" // --> true 

// ... string literals are concatenated by the compiler
// and the results are interned.
"test" == "te" + "st" // --> true

// ... but you should really just call Objects.equals()
Objects.equals("test", new String("test")) // --> true
Objects.equals(null, "test") // --> false
Objects.equals(null, null) // --> true