-
자바 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()를 사용해야겠다.
참고
반응형