ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 string 비교
    Java 2021. 9. 16. 23:50
    반응형
    @Override
        public boolean isUserExist(UserDto userDto) {
            User user = userRepository.getById(userDto.getId());
    
            if (user == null) {
                return false;
            }
            else {
                if (user.getPassword() != userDto.getPassword()) {
                    return false;
                }
                else {
                    return true;
                }
            }
        }

    입력한 비밀번호를 DB에 저장된 비밀번호와 비교하는 메소드이다. 이 때 C++ 문법에 익숙했던 나는 != 연산자를 이용하여 String 간의 비교를 했다. 그러나 계속 false가 리턴되어 제대로 입력해도 로그인이 안되는 문제가 발생했다. 그러다 Intellij에 경고문을 자세히 읽어보니 String values are compared using '!=', not 'equals()' 이라는 경고가 떴다. 그래서 equals()를 사용한 문구로 바꿔 실행해 보았다.

     

    @Override
        public boolean isUserExist(UserDto userDto) {
            User user = userRepository.getById(userDto.getId());
    
            return user.getPassword().equals(userDto.getPassword());
        }

    그랬더니 제대로 로그인이 실행되었다. 구글링해보니 자바에서 문자열 간에 단순한 비교 연산자 == 를 사용하면 문자열이 같아도 다르다고 나올 수 있다고 한다. 이유는 문자열 간의 비교가 아닌 객체 자체를 비교하여 문자열이 같아도 객체가 다르면 다르다고 나오기 때문이다. 앞으로는 문자열 간의 비교는 꼭 equals()를 사용해야겠다.

     


    참고

    https://codechacha.com/ko/java-string-compare/

    반응형

    'Java' 카테고리의 다른 글

    자바 강의 정리  (0) 2023.07.09
Designed by Tistory.