String 비교는 어떻게 하나요
조회수 13583회
발생하는 문제 및 실행환경
문자열 비교할때 ==를 항상 썼었는데 저번에 코딩하다가 버그나서 .equals()로 바꾸니까 고쳐졌어요. ==는 왜 버그가 났을까요 equals()랑은 뭐가 다른가요
1 답변
-
자바에서 ==는 객체를 비교하는거에요 둘의 레퍼런스가 같은지를 비교해주고요 .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
댓글 입력