학습 목표
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 |