본문 바로가기

동일성2

[Java] equals()와 hashCode()를 같이 재정의하자! 🙋 들어가며 오늘은 자바의 최상위 객체 Object에 equals()와 hashCode()에 대해서 이야기해 보겠습니다. 이번 글을 통해서 각 메서드를 언제, 어떻게 사용하는지 알아보고 왜 두 메서드를 같이 재정의해야 하는지 알아보겠습니다. 🟰 equals() 문자열을 비교할 때 많이 사용하는 친숙한 메서드입니다. 이 메서드를 왜 사용하는지 이해하기 위해서는 동일성과 동등성의 개념을 알아야 합니다. 간단하게 정리하면 다음과 같습니다. 그리고 이해를 위한 예시를 작성해 보겠습니다. 동일성(identity) : 같은 참조를 가진다. 동등성(equality) : 같은 값을 가진다. String str1 = new String("hejow"); String str2 = new String("hejow"); Sy.. 2023. 7. 20.
[이펙티브 자바] 아이템 10 : equals는 일반 규약을 지켜 재정의하라 🎯 학습 목표 Equals의 재정의 고려할 규약들 📌 Equals의 재정의 equals를 오버라이딩하는 것은 NPE를 던지거나 원하는 대로 작동하지 않을 가능성이 높다. 재정의를하지 않고 그대로 equals를 사용하게 된다면 인스턴스는 자기 자신만 같다고 표현한다. ✍️ 동일성 vs 동등성 : 동일성은 같은 참조인지 동등성은 같은 값을 가지는지 판단 🤔 언제 하지 말아야 할까? 1️⃣ 각 인스턴스가 본질적으로 고유 값이 아닌 동작을 나타내는 인스턴스는 같은 인스턴스가 애초에 없다. (Ex. Thread) Object의 equals로 충분하다. 2️⃣ 인스턴스의 논리적 동치성을 검사할 일이 없다. 논리적 동치성을 검사할 일이 없다는 것은 단순 동일성을 검사한다는 의미이다. Object의 equals로 충분.. 2023. 1. 31.