java.lang - Object클래스
미리 알고 가야할 팁
- 객체를 생성할 때 비어있는 메모리 공간을 찾아 생성한다
-> 서로 다른 두 개의 객체가 같은 주소를 갖는 일은 없다.
-> 하지만, 두개 이상의 참조변수가 같은 주소값을 갖는 것은 가능하다.
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()을 통해 복제가 가능하다.
-> 해당 복제본은 원본과 다르다!
Author And Source
이 문제에 관하여(java.lang - Object클래스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ji-ha/java.lang-Object저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)