[Java] Object 클래스

이지현·2022년 3월 24일
0
post-thumbnail

📕1. Object 클래스

1-1. Object 클래스란?

  • 우리가 지금까지 사용한 String, Integer 와 같은 클래스를 사용했는데 이들은 java.lang 패키지에 속해있는 클래스들이다.
  • 프로그램에서 가장 많이 사용하는 기본클래스 이며, 그런 기본 클래스의 최상의 클래스를 Object 클래스 라고 한다.

자바에서 기본적으로 제공하는 클래스는 모두 Object 클래스를 상속받고 있는데
이중 우리가 주로 사용되는 Object 메서드는 무엇인지 알아보자


1-2. Object 클래스 메서드

메서드설명
String toString()객체를 문자열로 표현하여 반환한다. 재정의하여 객체에 대한 설명이나 특정 멤버 변수 값을 반환한다.
boolean equals(Object obj)두 인스턴스가 동일한지 여부를 반환한다. 재정의하여 논리적으로 동일한 인스턴스임을 정의할 수있다.
int hashCode()객체의 해시 코드 값을 반환한다.
Object clone()객체를 복제하여 동일한 멤버 변수 값을 가진 새로운 인스턴스를 생성한다.
class getClass()객체의 Class 클래슬르 반환한다.
void finalize()인스턴스가 힙 메모리에서 제거될 때 가비지 컬렉터에 의해 호출되는 메서드이다. 네트워크 연결해제, 열려있는 파일 스트림 해제 등을 구현한다.
void wait()멀티스레드 프로그램에서 사용하는 메서드이다. 스레드를 '기다리는 상태' 로 만든다.
void notify()wait() 메서드에 의해 기다리고 있는 스레드를 실행 가능한 상태로 가져온다.

Object 메서드 중에는 재정의할 수있는 메서드도 있고, 그렇지 않은 메서드도 있는데 자주 재정의하여 사용하는 메서드 위주로 알아보자!


📕2. toString()

2-1. toString() 이란?

  • 인스턴스 정보를 문자열로 반환하는 메서드이다.
  • 생성된 인스턴스의 클래스 값을 보여준다.

2-2. toString() 사용 예제

💡 Object 클래스의 toString() 메서드 사용하기

class Book {
    int bookNumber;
    String bookTitle;

    // 책 번호와 제목을 매개변수로 입력받는 생성자
    Book(int bookNumber, String bookTitle) {
        this.bookNumber = bookNumber;
        this.bookTitle = bookTitle;
    }
}//////////////// Book

public class ToStringEx {
    public static void main(String[] args) {
        Book book1 = new Book(200, "개미");

        // book1 : 인스턴스 정보(클래스 이름.주소 값)
        System.out.println(book1);
        // book1.toString() : toString() 메서드로 인스턴스 정보(클래스이름.주소 값)을 보여줌
        System.out.println(book1.toString());
    }
}////////// ToStringEx

💡 출력 결과

Book@15db9742
Book@15db9742


📕3. equals()

3-1. equals() 란?

  • 두 인스턴스의 주소 값을 비교하여 boolean 값을 반환해 주는 것이다.

그런데 서로 다른 주소 값을 가질 때도 같은 인스턴스라고 정의할 수 있는 경우가 있다.

그게 무슨말일까?

인스턴스를 가리키는 참조변수가 두 개 있을 때 이 두 인스턴스가 물리적으로 같다는 것은, 두 인스턴스의 주소 값이 같은 경우를 말한다.

다시 말해 두 변수가 같은 메모리 주소를 가리키고 있다는 뜻이다.

예를 들어


Student studentLee = new Student(100, "홍길동");
Student studentLee2 = studentLee;   // 주소를 복사함

이 경우 , 두 변수는 동일한 인스턴스를 가리키는 것이고 equals() 메서드를 이용해 두 변수를 비교하면 동일하다는 결과가 나온다.


📕4. hashCode()

4-1. hashCode() 란?

  • hash(해시) 는 정보를 저장하고나 검색할 때 사용하는 자료 구조이다.

정보를 어디에 저장한 것인지, 어디서 가져올 것인지 해시 함수를 사용하여 구현하는데

해시 함수는 객체의 특정 정보(키, 값) 을 매개변수 값으로 넣으면 그 객체가 저장되어야 할 위치나 저장된 해시 테이블 주소(위치)를 반환한다.

즉, 객체 정보를 알면 해당 객체의 위치를 빠르게 검색할 수 있다.


📕5. clone()

5-1. clone() 란?

  • 객체 원본을 유지해 놓고 복사본을 사용한다거나, 기본 틀의 복사본을 사용해 동일한 인스턴스를 만들어 복잡한 생성 과정을 간단히 하려는 경우에 clone() 메서드를 사용한다.
  • 즉, 객체를 복제해 또 다른 객체를 반환해 주는 메서드 이다.
profile
개발 공부 중인 지현이

0개의 댓글