Java

[Java] Java에서의 equals() 메소드 사용 시 주의할 점: operator.equals("+") vs "+".equals(operator)

yujinius 2024. 4. 7. 20:32

Java에서의 equals() 메소드 사용 시 주의할 점

 

Java에서 객체의 동등성을 비교할 때 equals() 메소드를 사용하는 것은 흔한 일입니다.

그러나 메소드를 호출할 때 객체가 null인 경우에 대한 처리 방식을 고려해야 합니다.

특히 문자열 비교 시 이러한 주의사항이 더욱 중요합니다.

 

operator.equals("+")

if (operator.equals("+")) {
    // 코드 실행
} else {
    // 다른 작업 수행
}
  • 위와 같은 코드에서 operator가 null인 경우, NullPointerException이 발생할 수 있습니다.
  • 왜냐하면 operator가 null인 경우, equals() 메소드를 호출할 때 해당 객체가 존재하지 않기 때문입니다.

"+".equals(operator)

if ("+".equals(operator)) {
    // 코드 실행
} else {
    // 다른 작업 수행
}
  • 이 코드는 operator가 null인지 여부에 상관없이 안전하게 동작합니다.
  • 만약 operator가 null이라면 false를 반환하며, 예외가 발생하지 않습니다.
  • 이는 equals() 메소드가 null을 수용하는 형태로 구현되어 있기 때문입니다.

 

결론

위의 예시에서도 볼 수 있듯이, 두 가지 방식 모두 동등성을 비교하는 데 사용됩니다.

그러나 null 처리 방식에서 차이가 있습니다.

따라서 안전한 코드를 작성하기 위해서는 객체가 null인 경우를 고려하여 equals() 메소드를 호출하는 방식을 선택하는 것이 좋습니다.