12.1 API 도큐먼트

라이브러리가 클래스와 인터페이스의 집합이라면, APU 도큐먼트는 이를 사용하기 위한 방법을 기술 한 것.

12.2 java.base 모듈

java.base는 모든 모듈이 의존하는 기본 모듈로, 모듈 중 유일하게 requres하지 않아도 사용할 수 있음.

image.png

java.lang은 자바 언어의 기본적인 클래스를 담고 있는 패키지임.

image.png

12.3 Object 클래스

클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속하게 됨. 따라서 자바의 모든 클래스는 Object의 자식이거나 자손 클래스임.

image.png

Object의 주요 메소드임.

image.png

객체 동등 비교

Object의 equals() 메소드는 객체의 번지를 비교하고 boolean 값을 리턴함

public boolean equals(Object obj)

equals() 메소드의 매개변수 타입이 Object이므로 자동 타입 변환에 의해 모든 객체가 매개값으로 대입될 수 있음. equals() 메소드는 비교 연산자인 ==과 동일한 결과를 리턴함. 두 객체가 동일한 객체라면 true를 리턴하고, 그렇지 않으면 false를 리턴함.

Object obj1 = new Object();
Object obj2 = obj1;
boolean result = obj1.equals(obj2);
boolean result = (obj1 == obj2)

일반적으로 Object의 equals() 메소드는 재정의해서 동등 비교용으로 사용됨. 동등 비교란 객체가 비록 달라도 내부의 데이터가 같은 지를 비교하는 것을 말함. 예 들어 String은 equals() 메소드를 재정의해서 내부 문자열이 같은 지를 비교함.

package ch12.sec03;

public class EqualsExample {
    public static void main(String[] args) {
        Member obj1 = new Member("blue");
        Member obj2 = new Member("blue");
        Member obj3 = new Member("red");

        if(obj1.equals(obj2)) {
            System.out.println("obj1과 obj2는 동등합니다.");
        } else {
            System.out.println("obj1과 obj2는 동등하지 않습니다.");
        }

        if(obj1.equals(obj3)) {
            System.out.println("obj1과 obj3은 동등합니다.");
        } else {
            System.out.println("obj1과 obj3은 동등하지 않습니다.");
        }
    }
}

객체 해시코드