String 비교는 어떻게 하나요


발생하는 문제 및 실행환경

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

  • 2016년 01월 05일에 작성됨

조회수 639


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
  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close