본문 바로가기
Java

Objects.equals() vs equals()

by sangyunpark99 2024. 9. 25.
두 메서드에 어떤 차이가 존재하는지
알아보도록 하겠습니다.

 

Equals()

equals() 메서드의 설명과 내부 로직은 다음과 같습니다.

 

 

설명

Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.
해석은 다음과 같습니다.
이 문자열을 지정된 개체와 비교합니다. 결과는 인수가 null이 아니며 이 개체와 동일한 문자 시퀀스를 나타내는 문자열 개체인 경우에만 참입니다.

 

 

내부 로직

equals 내부 로직

 

🔎 equals()메소드를 비교하는 대상이 null인 경우

간단한 실험을 통해 알아보도록 하겠습니다.

https://sangyunpark99.tistory.com/entry/equals%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC-%EB%B9%84%EA%B5%90%ED%95%98%EB%8A%94-%EB%8C%80%EC%83%81%EC%9D%B4-null%EC%9D%B8-%EA%B2%BD%EC%9A%B0

 

equals()메소드를 비교하는 대상이 null인 경우

오늘의 실험체는 equals() 메서드 입니다.실험 주제는 equals()메서드에게 null은 안전한가? 입니다.바로 실험 시작하겠습니다. 🧐 실험 코드코드는 다음과 같습니다.String a = null;String b = "hello";boolean

sangyunpark99.tistory.com

 

실험 결과 equals() 메소드는 null-safe하지 않다는 사실이 검증되었습니다.

 

 

Object.equals()

Object.equals() 메서드의 설명과 내부 로직은 다음과 같습니다.

 

설명

Returns true if the arguments are equal to each other and false otherwise. Consequently, if both arguments are null, true is returned. Otherwise, if the first argument is not null, equality is determined by calling the equals method of the first argument with the second argument of this method. Otherwise, false is returned.

 

해석은 다음과 같습니다.

 

두 인자가 서로 같으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 따라서 두 인자가 모두 null이면 true를 반환합니다. 그렇지 않고 첫 번째 인자가 null이 아니면, 첫 번째 인자의 equals 메서드를 호출하여 두 번째 인자와의 동등성을 판단합니다. 그 외의 경우에는 false를 반환합니다.

 

설명에서 알 수 있듯이 Object.equals()는 null-safe합니다.

 

 

내부 로직

 

equals() 메서드에 파라미터로 들어오는 값인 Object a, Object b 둘다 @Nullable(null 이 전달될 수 있다.)이 붙어있다.

메서드를 통해서도 null-safe하다는 사실을 알 수 있다.

 

🔎  Object.equals() 메서드가 정말 null-safe한가?

간단한 실험을 통해서 알아보도록 하겠습니다.

https://sangyunpark99.tistory.com/entry/Objectequals-%EB%A9%94%EC%84%9C%EB%93%9C%EA%B0%80-%EC%A0%95%EB%A7%90-null-safe%ED%95%9C%EA%B0%80

 

Object.equals() 메서드가 정말 null-safe한가?

오늘의 실험체는 Ojbect.equals() 메서드 입니다.실험 주제는 Object.equals() 메서드가 정말 null-safe한가?입니다.실험 시작합니다.🧐 실험 코드코드는 다음과 같습니다.package equals실험;import java.util.Objec

sangyunpark99.tistory.com

 

실험 결과 Objects.equals() 메소드는 null-safe하다는 사실이 입증되었습니다.

 

결론

두 메서드의 차이점은 null-safe의 여부로 판단할 수 있습니다.

equals() 메서드는 null-safe하지 않고, Object.equals()메서드는 null-safe합니다.

 

앞으로 비교할때, null-safe한 Object.equals()를 사용하고자 합니다.