- Object 클래스
Object 클래스
1. 모든 클래스의 부모클래스
2. 모든 클래스의 객체는 Object 클래스의 객체를 가지고 있다.
=> 모든 객체는 Object 타입으로 참조가 가능하다.
3. 모든 틀래스의 객체는 Object 클래스의 멤버를 호출할 수 있다.
equals 메서드
: 동일성 판단 메서드. 객체의 내용비교를 위한 메서드
객체의 내용의 동일성 판단을 위해서는 equals 메서드로 호출 해야함.
Object 클래스에서는 == 연산자와 동일한 기능을 구현.
내용비교(논리적 동등성)를 위해서는 오버라이딩이 필요함.
참조형 객체인 경우 내용비교를 위해서는 == 연산자 사용하지 말고 equlas 메서드로 비교.
📌
package chap11;
class Equal {
int value;
Equal(int value) {
this.value = value;
}
//내용비교를 위하여 equals 메서드를 오버라이딩 필요
@Override
public boolean equals(Object obj) {
if(obj instanceof Equal) {
Equal e = (Equal)obj;
return e.value ==value;
} else return false;
}
//논리적인 동등성을 위하여 hashCode 메서드 오버라이딩
@Override
public int hashCode() {
return value;
}
//내용 출력을 위한 toString() 메서드 오버라이딩
@Override
public String toString() {
return "Equal[value="+value+"]";
}
}
public class ObjectEx1 {
public static void main(String[] args) {
Equal e1 = new Equal(10);
Equal e2 = new Equal(10);
if(e1==e2) //참 : e1객체와 e2객체가 동일한 경우(내용 비교 불가)
System.out.println("e1==e2: e1과 e2는 같은 객체임");
else
System.out.println("e1!=e2: e1과 e2는 다른 객체임");
// equals 메서드는 Object 멤버 메서드임
// => 모든 객체는 equals 메서드를 포함한다.
// e1 객체의 내용과 e2 객체의 내용의 동일성 비교
// => equals 메서드를 오버라이딩 필요
if(e1.equals(e2))
System.out.println("e1.equals(e2): e1과 e2는 같은 내용의 객체임");
else
System.out.println("!e1.equals(e2): e1과 e2는 다른 내용의 객체임");
}
}
- hashCode()
hashCode() : 원래의 의미는 객체를 구분하기 위한 참조값
내용이 같다는 기능 => 논리적인 동등성.
- equals 의 결과가 true
- hashCode 값이 동일함.
권장사항 : equals 메서드 오버라이딩을 하는 경우 hashCode 메서드도 함께 오버라이딩 하도록 권장함.
📌
package chap11;
public class ObjectEx2 {
public static void main(String[] args) {
Equal e1 = new Equal(10);
Equal e2 = new Equal(10);
System.out.println(e1.hashCode());
System.out.println(e2.hashCode());
System.out.println(System.identityHashCode(e1)); //실제 e1의 HashCode 값 : 617901222
System.out.println(System.identityHashCode(e2)); //실제 e2의 HashCode 값 : 1159190947
}
}
- toString()
toString() : 객체를 문자열로 리턴하는 메서드
참조변수를 출력하면 자동으로 toString() 메서드가 호출됨.
내용 출력을 위해 오버라이딩 필요.
Object 클래스 : 클래스명(패키지명 포함)@16진수해쉬코드로 출력되도록 구현됨.
=> 각각의 클래스에서 나의 내용을 출력하기 위하여 오버라이딩이 필요하다.
📌
package chap11;
public class ObjectEx3 {
public static void main(String[] args) {
Equal e1 = new Equal(10);
Equal e2 = new Equal(10);
System.out.println(e1); //toString() 메서드 호출
System.out.println(e2); //toString() 메서드 호출
}
}
'수업(국비지원) > Java' 카테고리의 다른 글
| [Java] chap11: 기본 API(패키지 클래스) - String (0) | 2023.04.16 |
|---|---|
| [Java] chap11: 기본 API(패키지 클래스) - 기본 API Exam1 (0) | 2023.04.16 |
| [Java] chap10 : 내부 클래스 - 람다 Exam 1-2 (0) | 2023.04.16 |
| [Java] chap10 : 내부 클래스 - 람다(Lambda) (0) | 2023.04.16 |
| [Java] chap10 : 내부 클래스 - 내부 클래스 (0) | 2023.04.16 |