JAVA 유용한 클래스

(JAVA)Object 클래스란 뭘까? - 1

mynote6676 2025. 4. 24. 14:48

학습 목표 

1. Object 클래스란 뭘까?

2. Object 클래스의 메서드 활용

 

 

1.Object 클래스란 뭘까?

 

Object 모든 클래스의 최상위 클래스입니다. 모든 클래스는 Object에서 상속받고, Object클래스의 메서드

중 일부는 재정의해서 사용할 수 있음.자바에서는 단일 상속만을 지원한다고 하엿는데 Object 클래스의 제

외한 단 하나의 상속만 받을 수 있습니다.

 

-Object 클래스는 java.lang 패키지안에 존재 합니다.

-import java.lang.*; 프로그래밍시 import 하지 않아도 자동으로 imort됩니다.

-많이 사용하는 기본 클래스들이 속한 패키지이며 String,Integer,System... 등이 존재 합니다.

 

2.Object 클래스의 메서드 활용

 

Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음. 재정의 할 수 없는 메서드는 final로 메서드는 final로 선언 되어

있습니다.

 

toString() 메서드

 

-객체의 정보(맴버변수)를 String으로 바꾸어서 사용할 때 쓰임

-String이나 Integer 클래스는 이미 재정의 되어 있음

-toString()메서드 재정의 예

 

Equals() 메서드

 

기능 : 두 객체의 동등성을 비교합니다.

기본 동작 :참조 비교(==)를 수행하여 두 객체가 동일한 메모리 주소를 가리키는지 확인.

재정의 목적 : 논리적 동등성을 비교 (예: 책의 제목,저자 , ID가 같으면 책으로 간주.)

주의사항: equals()를 재정의할 때는 hashCode()도 반드시 재정의해야 합니다.

 

hashCode()메서드

기능: 객체의 해시코드를 반환합니다, 해시코드는 객체를 고유하게 식별할 수 있는 정수 값으로, 객체를

효율적으로 저장하고 검색할 때 사용됩니다.

기본 동작: 객체의 메모리 주소를 기반으로 고유한 정수 값을 생성.

재정의 목적: 논리적으로 동일한 객체가 동일한 해시코드를 반환하도록 보장하여, equals()와 일관성 유지.

 

해시코드란?

비유 예시: 도서관의 책 찾기

도서관에 수십만 권의 책이 있다고 가정해봅시다. 책을 찾기 위해 매번 모든 책을 하나씩 확인하는 건

비효울적입니다. 대신, 도서관은 책마다 고유한 청구기호(예: 813.6-헤123데)를 붙혀 책을 분류합니다.

이 청구기호를 이용하면 특정 책이 어느 책장에 잇는지 빠르게 찾을 수 있다.

여기서 청구기호가 바로 해시코드와 비슷합니다. 자바의 hashCode() 메서드는 객체에 고유한 숫자를 부여하여, 객체를 빠르개

저장하고 검색할 수 있도록 돕습니다.

package _object;

//import  java.lang.
//import  java.lang.*;

//java.lang.* 패키지도 자동으로 넣어준다.

/**
 * Object 최상위클래스 대한 이해
 * 기본적으로 Object클래스를 상속 받는다.
 * 자바는  Object클래스 를제외하고
 * 단일 상속만을 제공한다.
 */
//public class Book extends Object
public class Book {
    private int bookTybeId;
    private String title;
    private String author;

    public Book(int bookTybeId, String title, String author) {
        this.bookTybeId = bookTybeId;
        this.title = title;
        this.author = author;
    }

    @Override

    public boolean equals(Object obj) {
        if (obj instanceof Book) {
            //Book 타입이 맞다면 추가적으로 , 제목이 같다면 같은 책으로 판단하겠다.
            //this.제목 == obj .제목 && this.저자 == obj.저자
            if (this.title.equals(((Book) obj).title) && this.author.equals(((Book) obj).author)) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
        //equals() 메서드를 재정할때는 hashcode메서드 재정의
        //해주어야 의도하지 않은 동작을 막을수있다.
    }

    @Override
    public int hashCode() {
        // hashCode -> 이 객체의 고유한 정수값을 만들어서 독립적인 녀석을 보장하는 정수값
        return bookTybeId;
    }
    //    @Override
//    public String toString() {
//        return "title : " + title + ", " + "author : " + author;
//    }

    //테스트 코드
    public static void main(String[] args) {

        //물리적 객체 주소값은 다르지만 equals() 메서들 재정의해서
        //논리적으로 책을 이름과 저자이름이 같아지면 같은녀석으로 바라보게
        //프로그램을 만들어 주세요.

        //책 제목과 저자이름이 같다면 논리적으로 같은 책으로 판별하자.
        Book book1 = new Book(1, "데미안", "헤르만헤세");
        Book book2 = new Book(1, "데미안", "헤르만헤세");
        Book book3 = new Book(2, "자바", "홍길동");
        Book book4 = new Book(1, "데미안", "파울로코엘로");
        String str1 = new String("데미안");

        System.out.println(book1.toString());
        System.out.println(book2.toString());

        boolean result1 = book1.equals(book2);
        boolean result2 = book1.equals(str1);
        boolean result3 = book1.equals(book3);
        boolean result4 = book1.equals(book4);

        System.out.println("result1 : " + result1);
        System.out.println("result2 : " + result2);
        System.out.println("result3 : " + result3);
        System.out.println("result4 : " + result4);
        //toString은 주소값을 반환해준다.
    }

}

'JAVA 유용한 클래스' 카테고리의 다른 글

(JAVA)자바 multi-threading 이란 - 6  (0) 2025.04.25
(JAVA)자바 Thread - 5  (0) 2025.04.25
(JAVA)Exception(예외처리)  (0) 2025.04.24
(JAVA)String, StringBuffer  (0) 2025.04.24
(JAVA)자바 API 문서 확인해 보기 - 2  (0) 2025.04.24