1. Object 클래스
- 모든 클래스의 최상위 클래스 -> java의 모든 클래스는 자동으로 object를 상속받음
- java.lang 패키지에 포함
- 1) toString() 메서드
클래스이름@해시코드값(16진수)
2. == vs equals()
- == : 래퍼런스(주소) 비교
- equals() : 같은 값인가
Point a = new Point(2, 3);
Point b = new Point(2, 3);
Point c = a;
System.out.println(a == b); // false (서로 다른 객체)
System.out.println(a == c); // true (같은 객체)
- c는 새 객체를 만드는 것이 아니라 a의 주소값을 그대로 c에 복제한다.
- Object.equals()는 기본적으로 == 과 동일하게 작동한다
class Point {
private int x, y;
public Point(int x, int y) {
this.x = x; this.y = y;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // 자기 자신 비교
if (obj == null || getClass() != obj.getClass()) return false; // null 또는 클래스 다름
Point p = (Point) obj;
return x == p.x && y == p.y; // 내용 비교
}
}
- equals()가 true면, hashCode()도 같아야 한다.
@Override
public int hashCode() {
return Objects.hash(x, y);
}