Generic Objects

서재환·2021년 12월 7일
0

JAVA

목록 보기
11/16

equals()의 유래에 대해서 알아보자.

이번 시간에는 equals가 어떤 방식으로 작동하는지 알아보는 시간을 갖고자한다. 아래 다음과 같은
코드가 있다고 하자. one.equls(two)는 같아서 "they are the same"이 출력될까?
public class Main {
    public static void main(String[] args) {
        String one= "hello world";
        String two= "hello world";
        
        if (one.equals(two)) {
            System.out.println("they are the same");
        }        
    }
}
답은 그러하다이다. 그리고 지금부터 그 이유에 대해서 알아보고자한다.

equals()는 해당 메서드를 적용하려는 객체의 타입을 본다. 보통 같은지에 대한 메서드는 해당 변수가
갖고 있는 주소값을 비교한다. 하지만 위의 예시에서 두개의 변수의 주소값은 서로 다르다. 그런데 one
.equls(two)가 성립해서 출력을한다. 그렇다면 equals()는 어디서 온 것일까?

그에 대한 답은 equals()가 어디서 왔는지 보면 알 수가 있다. equlas()는 String 객체로부터 온 
메서드이다. 

여기서부터가 중요한 내용인데 이 equals는 Object의 equals를 String 객체가 오버라이드해서 
String 객체가 사용하고 있다. 즉 위에서의 equals()는 객체에 있는 equals를 String 객체에서 
오버라이드 한 메서드를 가지고 와서 사용하는 것이다.

원래 메소드를 오버라이드해서 String 객체에서 사용하고 있고 그런 built in method를 사용자가 사용
한다는 것이 포인트이다. 

0개의 댓글