java.lang - Object클래스

노지환·2021년 12월 4일
0

미리 알고 가야할 팁

  • 객체를 생성할 때 비어있는 메모리 공간을 찾아 생성한다
    -> 서로 다른 두 개의 객체가 같은 주소를 갖는 일은 없다.
    -> 하지만, 두개 이상의 참조변수가 같은 주소값을 갖는 것은 가능하다.

Object 클래스

모든 클래스들의 최고 조상

equals 메서드

객체의 참조변수를 받아 비교하는 메서드

public boolean equals(Object obj) {
        return (this == obj);
}
  • Object에서의 equal은 == 에 의해 판단된다.
    -> 이는 참조변수의 값을 비교함으로써 판단한다.
    사진으로 보면, 두 참조변수의 뿌리가 같은지 확인하는 과정이 equal의 로직인 것을 확인할 수 있다.

hashCode 메서드

Object의 hashCode 메서드

@HotSpotIntrinsicCandidate
    public native int hashCode();
  • 해싱?: 데이터관리기법 중 하나. 다량의 데이터를 저장하고 검색
  • 같은 객체라면? hashCode메서드를 호출했을 때 결과값인 해시코드도 같아야한다.

+ native메서드

  • 추상메서드처럼 몸통 없이 선언부만 있는 메서드이다.
  • 자바로 구현하지 않고 해당 OS에 이미 존재하는 메서드를 사용한다.

clone 메서드

자신을 복제하여 새로운 인스턴스를 생성하는 메서드

int[] arr = [1, 2, 3, 4, 5];
int[] arrClone = arr.clone();
  • 단순히 멤버변수의 값만 복사한다.
  • 배열이나 인스턴스가 멤버로 정의되어 있는 클래스의 인스턴스는 완전한 복제가 불가능하다!
    -> 복제된 인스턴스도 같은 주소를 갖기 때문에 원래의 인스턴스에 영향을 미친다.
public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        int[] arrClone = arr.clone();

        System.out.println(arr); //[I@2d6e8792
        System.out.println(arr.clone()); //[I@2812cbfa
        System.out.println(arrClone); //[I@2acf57e3

        arrClone[1] = 0;
        System.out.println(arr[1]); // 2
        System.out.println(arrClone[1]); // 0
}

배열 복사가 되는 이유 ?

-> 배열도 객체이기 때문에 Object를 상속 받고, Coneable과 Serializable을 구현하였기 때문에 clone()을 통해 복제가 가능하다.
-> 해당 복제본은 원본과 다르다!

profile
기초가 단단한 프로그래머 -ing

0개의 댓글