일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바클래스가 안보일때
- printStackTrace()
- 인텔리제이물음표파일
- 포트충돌
- 빨간폴더
- 사용자 정의 예외
- 설치에러
- checked예외
- 파일을 읽을 수 없을때
- 인텔리제이
- getMessage()
- 빨간파일
- mvc project 생성
- 예외처리
- unchecked예외
- 멀티 catch 블럭
- 깃베쉬
- throw e
- chained exception
- 소스루트설정
- POST요청
- 예외발생
- arrays메서드
- 이클립스
- 예외 발생
- source root
- 스프링 mvc프로젝트가 안뜰때
- mark directory as
- exception re-throwing
- 색상에 따른 상태
- Today
- Total
프로그래밍 스티치
Object클래스 본문
Object클래스는 모든 클래스의 최고 조상으로써, 11개의 메서드만을 가지고 있습니다.
norify(), wait()등은 쓰레드와 관련된 메서드이며, equals(), hashCode(), toString()은 적절히 오버라이딩 해야합니다.
많은 사람들이 equals()를 오버라이딩 하는 이유를 살펴보면
public boolean equals(Object obj) {
return (this==obj)
}
위와 같이 equals()는 객체 자신과 주어진 객체(obj)를 비교합니다! 즉 Object클래스에 정의된 equals()는 참조변수 값(객체의 주소)을 비교합니다. 우리는 참조변수값을 비교할 때도 많지만 객체에 주어진 값, 즉 인스턴스변수의 값을 비교하는 경우가 많기 때문에 아래와 같이 오버라이딩합니다.
class Person {
long id;
public boolean equals (Object obj) {
if(obj!=null && obj instanceof Person) {
return id ==((Person)obj).id;
} else {
return false;
}
}
Person(long id) {
this.id = id;
}
}
hashCode()
객체의 해시코드를 반환하는 메서드(해시함수)로써 다량의 데이터를 저장, 검색하는 해싱기법에 사용됩니다.
Object클래스의 hashCode()는 객체의 내부주소를 반환합니다!
equals()를 오버라이딩하면 hashCode()도 같이 오버라이딩 해야만 하는데요 그 이유는!
equals()의 결과가 true인 두 객체의 hashcode는 같아야 하기 때문입니다.
해시코드를 오버라이딩한뒤에 객체의 내부주소를 알고싶을때는
System.identityHashCode(Object obj)를 사용하면 됩니다!
toString()
객체의 정보를 문자열(String)로 제공할 목적으로 정의된 메서드로써 코드를 살펴보면
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
클래스의 이름을 반환한뒤 16진수로 해시코드를 반환한다. 이런 값은 주로 사용되지 않아서 보통 우리가 보기 편하게 오버라이딩을 많이 하는편이다.
getClass()
자신이 속한 클래스의 Class객체를 반환하는 메서드.
Class객체는 클래스의 모든 정보를 담고 있으며, 클래스당 단 1개만 존재합니다.
클래스파일이 메모리에 로드될때 생성됩니다.
'JAVA > java.lang패키지와 유용한클래스' 카테고리의 다른 글
자바 정규 표현식 (Pattern, Matcher) 사용법&예제 (0) | 2022.02.14 |
---|