Java

Object 클래스

Dev_Green 2022. 10. 4. 13:26

1. 개요

Object는 자바의 최상위 부모 클래스이다.

따라서 자바의 모든 클래스는 java.lang.Object 클래스를 상속하게 된다.

 

Object 클래스는 아무 필드도 가지지 않으며 메소드로만 구성되어 있다. 

이 메소드들은 모든 클래스에서 이용할 수 있다.

*모든 클래스가 Object 클래스를 상속하므로

 

2. 포함 메소드

1) equals() - 객체 비교

매개타입은 Object로, 모든 객체가 매개 값으로 입력될 수 있다.

* Object가 최상위 타입이므로 모든 객체는 Object 타입으로 자동 타입 변환될 수 있기 때문이다

public boolean equals(Object obj) {...}

 

equals() 메소드의 결과값은 비교 연산자인 "=="과 동일한 결과가 리턴된다.

 

primitive type(int, boolean, chart 등)은 Call by Value 형태로 기본적으로 대상에 주소값을 가지지 않고 값 자체로 호출되고, 클래스(String, Oject 등)는 Call by Reference 형태로 생성 시 주소값이 부여된다. 

  equals() ==
비교 대상 value(값 자체) reference(주소값)
같은 값을 가지고 있는
클래스 끼리 비교했을 때 결과
True 상황에 따라 다름
아래 코드 참조
같은 값을 가지고 있는
primitive type 끼리 비교했을 때 결과
True -
primitive값은 주소값이 없으므로 == 비교 불가

 

int a = 1;
int b = 1;

String x = "a";
String y = "a";  // 리터럴 방식
String z = new String("a");  // 생성자 방식

System.out.println(a==b);  // true

System.out.println(x==y);  // true
System.out.println(x==z);  // false

System.out.println(x.equals(y));  // true

 

Object 클래스의 equals() 메소드는 직접 사용되지 않고 하위 클래스에서 재정의(Overrider) 되어서 논리적 동등비교 시 이용된다.

*논리적 동등: 인스턴스 동등 여부에 관계없이 저장하고 있는 데이터 자체가 같은지 여부

 

 

 

2) hashCode() - 객체 해시코드 리턴

객체 해시코드: 객체를 식별할 하나의 정수값

 

Object의 hashCode() 메소드는 객체의 메모리 주소를 이용하여 해시코드를 만들어 리턴한다.

따라서 객체마다 다른 값을 가지고 있다.