이 chapter에서는 자세한 설명은 하지않고 키워드만 제시하도록 하겠다. 자세한 건 책이나 검색을 하길 바람.

java.lang패키지

java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다.

따라서 import문 없이도 사용할 수 있다. 예를 들어 String클래스나 System클래스들을 import문 없이 사용할 수 있었다.

Object클래스

Object클래스는 멤버변수는 없고 메소드만 11개를 가지고 있다.

equals(Object obj)

객체의 참조변수를 비교해서 boolean값으로 알려줌. 참조변수 비교를 할 때는 변수 안에있는 주소값에대해 비교를 하기 때문에 요소에 대해 비교를 하고 싶다면, 클래스 내에서 오버라이딩하여 구현해주면 된다.

hashCode()

해싱 기법에 사용되는 해시함수를 구현한 메소드이다. 해싱은 데이터관리기법 중의 하나로 다량의 데이터를 저장하고 검색하는데 유용하다.

해시함수는 찾고자하는 값을 입력하면, 그 값이 저장된 위치를 알려주는 해시코드를 반환한다.

일반적으로 해시코드는 같은 두 객체가 존재할 수 있지만, Object클래스의 hashCode()는 객체의 주소값을 이용해서 해시코드를 만들어 반환하기 때문에 서로다른 두 객체는 같은 해시코드값을 가질 수 없다.

이 역시도 오버라이딩 할 수 있다. String클래스의 경우 문자열의 내용이 같으면 동일한 해시코드를 반환하도록 오버라이딩 되어있다.

toString()

인스턴스에 대한 정보를 문자열로 제공할 목적으로 정의한 것이다. 인스턴스 정보는 대부분 인스턴스 변수에 저장된 값들을 문자열로 표현한다는 뜻이다.

public String toString(){
		return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

보통은 오버라이딩하여 사용한다. String클래스의 경우 문자열을 반환한다.

오버라이딩은 public으로 해야한다. 이유는 알지?

clone()

자신을 복제하여 새로운 인스턴스를 생성하는 일을 한다. Object클래스의 clone()은 단순히 인스턴스변수의 값만을 복사하기 때문에 참조변수 타입의 인스턴스가 정의되어있는 클래스는 완전한 인스턴스 복제가 이루어지지 않는다.