[JAVA] java.lang패키지와 유용한 클래스 - Object클래스와 equals()

선영·2022년 6월 19일
0
post-thumbnail

Object 클래스

  • Object클래스는 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능함.
  • Object 클래스는 멤버변수는 없고 오직 11개의 메서드만 가지고 있음.
  • notify(), wait() 등은 쓰레드와 관련된 메서드.
  • class Class() : 클래스의 정보를 담기 위한 클래스
    Hello.java 를 컴파일하면 Hello.class 파일이 만들어짐. 즉, Hello의 class 객체가 생성되는 것.
    Reflection API
  • protected 로 되어 있는 것은 public으로 오버라이딩을 해줘야함.


equals(Object obj)

  • 객체 자신(this)과 주어진 객체(obj)를 비교함. 같으면 true 다르면 false.
  • Object 클래스의 equals()는 객체의 주소를 비교(참조변수 값 비교)
class Person {
	long id;

	Person(long id) {
		this.id = id;
	}
    ...코드생략...
class Ex9_2 {
	public static void main(String[] args) {
		Person p1 = new Person(8011081111222L);
		Person p2 = new Person(8011081111222L);

		if(p1.equals(p2))
			System.out.println("p1과 p2는 같은 사람입니다.");
		else
			System.out.println("p1과 p2는 다른 사람입니다.");
	}    

  • 위의 코드는 객체의 주소(참조변수 값)를 비교했기 때문에 p1과 p2가 다른 사람이라는 결과가 나옴.
  • 매개변수로 받은 값을 비교하려면 Object의 equals()를 오버라이딩하여 값을 비교해야함. 참조변수 형변환 전에는 반드시 instanceof로 확인!
class Person {
	long id;

	Person(long id) {
		this.id = id;
	}
    
	public boolean equals(Object obj) {
		if(obj instanceof Person)
			return id ==((Person)obj).id;
		else
			return false;
	}
}    


0개의 댓글