Java의 String equals(), Integer equals(), Object equals()의 동작과정

일단 해볼게·2024년 3월 8일
0

Java

목록 보기
3/3

Java17을 기준으로 작성했습니다.

String equals

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        return (anObject instanceof String aString)
                && (!COMPACT_STRINGS || this.coder == aString.coder)
                && StringLatin1.equals(value, aString.value);
    }
  1. == 키워드를 통해 두 객체의 동일성 여부를 판단
  2. 두 객체가 동일하지 않다면 String인지 여부를 판단한 뒤, 문자 하나 하나가 같은지 비교

Integer equals

public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }
  1. 먼저 인자가 Integer인지 확인
  2. 내용에 해당하는 정수를 == 키워드를 통해 같은지 판단

Object equals

  1. == 연산자를 통해 두 객체가 동일하다면 동등하므로 true를 반환

  2. 그렇지 않다면 첫 번째 매개 변수로 들어온 객체의 equals() 메소드를 호출하여 동등성을 판단

    public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }
  • 첫 번째 매개 변수(a)로 들어온 객체에 의존하는 것을 알 수 있다.
  • 만약 첫 번째 매개 변수로 들어온 객체(a)가 equals() 메소드를 재정의하지 않았다면 동일성 비교를 하게 될 것이다.
  • 즉 개발자가 커스텀 객체를 만들었을 때, 해당 객체에 동등성 비교가 필요하다면 반드시 equals() 메소드를 재정의해 주어야 한다.
profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글