Written by
Poogle
on
on
자바 기초 - Object
책 ‘자바의 정석’을 참고했습니다.
java.lang
패키지
- 자바 프로그래밍에 가장 기본이 되는 클래스들 포함 -> import 없이도 사용할 수 있음
Object 클래스
- 모든 클래스의 최고 조상 -> 모든 클래스에서 바로 사용 가능
equals()
- 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로 알려주는 역할
public boolean equals(Object obj) { return (this == obj); }
- 두 객체의 같고 다름을 참조변수의 값으로 판단
- 서로 다른 두 객체를 equals로 비교하면 항상 false
- 객체를 생성할 때 메모리의 비여있는 공간을 찾아 생성 -> 서로 다른 두 개의 객체가 같은 주소를 갖는 일은 있을 수 없음
- But! 두 개 이상의 참조변수가 같은 주소값을 갖는 것(한 객체를 참조하는 것)은 가능
equals()
를 오버라이딩해서 주소가 아닌 객체에 저장된 내용을 비교하도록 변경할 수 있음
hashCode()
- Object 클래스에 정의된 hashCode 메서드는 객체의 주소값을 이용해서 해시코드를 만들어 반환하기 때문에 서로 다른 두 객체는 같은 해시코드를 가질 수 없음
- 클래스의 인스턴스 변수 값으로 객체의 같고 다름을 판단해야 하는 경우
equals()
뿐만 아니라hashCode()
도 오버라이딩 해야 함- ⏩ 같은 객체라면 hashCode를 호출했을 때의 해시코드도 같아야 하기 때문!
toString()
- 인스턴스에 대한 정보를 문자열로 제공
- 일반적으로 인스턴스나 클래스에 대한 정보 또는 인스턴스 변수들의 값을 문자열로 변환하여 반환하도록 오버라이딩