문장의 오류 분석 if (!password2.equals(password1)|| "".equals(password1) ||password1.equals(null)):
우선 올바른 방법은 if (null .equals(password1) || "".equals(password1) || !password1.equals(password2))라고 작성하세요.
그럼 틀린 글을 분석해보자:
주된 오류는 Password1.equals(null) 문장에 있습니다. null이면 널 포인터 예외가 보고됩니다. 그리고 이를 먼저 확인해야 합니다. 왜냐하면 비밀번호1이 null이면 나머지를 확인할 필요가 없기 때문입니다.
! 비밀번호2.equals(password1) 위와 동일하게, 비밀번호2에도 널 포인터 문제가 있을 수 있으므로 비밀번호1은 이전에 감지되었기 때문에 외부에 두어야 하므로 이 문장이 실행되면 비밀번호1은 확실히 널이 아닐 것입니다.
또한 다음 형식으로 작성할 수도 있습니다. if (StringUtils.isEmpty(password1) || !password1.equals(password2)), StringUtils.isEmpty(password1)은 null.equals와 동일합니다. (password1) || "".equals(password1)은 캡슐화되었습니다.
첨부한 것은 StringUtils에 대한 다른 분의 설명입니다: (전송) StringUtils 메소드의 Operation 객체는 JDK에서 제공하는 String 타입의 연산 메소드를 보완한 java.lang.String 타입의 객체입니다. 이며 null 안전합니다. 즉, 입력 매개변수 String이 null이면 NullPointerException이 발생하지 않지만 해당 처리가 수행됩니다. 예를 들어 입력이 null이면 반환 값도 null이 됩니다. 자세한 내용은 소스 코드를 확인하세요).
Java equals() 사용 오류 분석에 관한 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!