String 비교는 어떻게 하나요

발생하는 문제 및 실행환경

문자열 비교할때 ==를 항상 썼었는데 저번에 코딩하다가 버그나서 .equals()로 바꾸니까 고쳐졌어요. ==는 왜 버그가 났을까요 equals()랑은 뭐가 다른가요

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    자바에서 ==는 객체를 비교하는거에요 둘의 레퍼런스가 같은지를 비교해주고요 .equals()는 값을 비교해주는거에요. 님이 버그가 났던 이유는 아마 객체의 문자열 값은 같았지만 두 객체가 서로 다른 객체여서 ==로 비교해주었을때 false가 리턴되서 버그가 났던것 같아요 예제 줄테니까 보면서 둘의 차이점을 공부하시면 좋을것 같아요.

        // 둘다 똑같은 값을 가지고 있으니까 참 
        new String("test").equals("test") // --> true 
    
        //  new String으로 새로운 객체를 생성하고 "test"는 다른 객체여서 false
        new String("test") == "test" // --> false 
    
        // "test"라는 값을 가진 객체를 둘다 각자 생성해서 false
        new String("test") == new String("test") // --> false 
    
        // "test" "test"를 컴파일러는 같은 객체로 봐서 참 
        "test" == "test" // --> true 
    
        // checks for nulls and calls .equals()
        Objects.equals("test", new String("test")) // --> true
        Objects.equals(null, "test") // --> false
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.