클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속한다.
이는, 컴파일러 단에서 자동적으로 이루어진다.
그렇기에, Object가 가진 메소드를 모든 객체에서 사용할 수 있다.
그 종류는 대표적으로 세가지가 있다.
- boolean equals(Object obj)
- int hashCode()
- String toString()
각각 설명해보자
1. boolean equals(Object obj)
객체의 번지를 비교하여 결과를 리턴한다.
equals()는 ==은 기본적으로 동일하다.
대게, 메소드를 재정의해서(오버라이딩) 동등 비교로 사용하기도 한다.
"동등 비교"란 객체가 달라도 내부의 데이터가 같은지를 비교하는 것을 말한다.
가장 대표적인 예시가 String 객체이다.
String 같은 경우 equals를 재정의 하여 내부 문자열이 같은지 비교한다.
2. int hashCode()
일단 해시코드가 뭔지부터 알아보자면, 객체 해시코드는 객체를 식별하는 정수로 객체의 메모리 번지를 이용해서 해시코드를 생성한다.
따라서, 객체마다 다른 정수값을 리턴하고, 이 메소드의 용도는 equals()와 비슷하게 두 객체가 동등한지를 비교할 때 주로 사용된다.
equals와 바찬가지로 hashCode 메소드 역시 객체의 데이터를 기준으로 재정의해서 새로운 정수값을 리턴하도록 하는 것이 일반적이다.
객체가 달라도 내부 데이터가 동일하면 같은 정수값을 반환하기 위함.
그래서 equals와 hashCode를 같이 사용하기도 한다.
hashCode메소드를 통해서 정수값이 같은지 확인하고, equals() 메소드가 true를 리턴하는지를 확인해서 동등 객체임을 판단한다.
3. String toString()
toString의 경우 객체의 문자 정보를 리턴한다. 문자 정보란 객체를 문자열로 표현한 값으로, Object는 기본적으로 '클래스명@16진수해시코드'로 구성된 문자열을 리턴한다.
재정의해서 필요한 내용을 리턴받는다.
기본적으로 객체만 출력해도 toString()이 실행된 결과와 동일하게 나온다.
'Backend > JAVA' 카테고리의 다른 글
[JAVA] default 메소드에 대하여(모던 자바 인 액션) (0) | 2024.04.10 |
---|---|
[JAVA] 동작 파라미터화에 대하여(모던 자바 인 액션) (1) | 2024.03.13 |
[JAVA] Servlet 이란? (0) | 2023.08.20 |
[JAVA] JAVA 기본 용어 정리 (0) | 2023.07.31 |