자바 14일차

김재현·2022년 9월 16일
0

Java

목록 보기
15/15

java.lang 패키지와 유용한 클래스

  • java.lang 패키지는 자바프로그래밍에 기본이 되는 클래스를 포함하고 있다. 때문에 이 패키지의 클래스는 import문 없이도 사용할 수 있게 되어 있다.
    예시) String System 클래스 등..

Object 클래스

  • Object 클래스는 모든 클래스의 최고 조상. 오직 11개의 메서드만 갖고 있다.

  • wait와 notify는 쓰레드와 연관되어 있음.
  • protected void finalize() : 생성자와 연관이 있다. 거의 사용하지 않는다.
  • public Class getClass() : 객체의 클래스 정보 반환.
    첫 글자가 대문자인 Class. 클래스의 정보를 담기 위한 클래스. 즉, 설계도 객체다.
    getClass()를 호출하면 이 설계도 객체를 반환한다.
    이 설계도를 갖고 객체 생성하거나 정보를 얻을 수 있게 해놓은 것을 Reflection api라고 한다.
  • protected로 되어 있는 메서드는 오버라이딩 해서 public으로 전환해줘야 사용할 수 있다.

equals(Object obj)

  • 객체 자신(this)과 주어진 객체(obj)를 비교. 같으면 true, 다르면 false.
  • Object 클래스의 equals()는 객체의 주소를 비교(참조변수 값 비교)
    즉, 주소가 같아야 true이다.
public boolean equals(Obj obj){
	return (this==obj);
}
  • 서로 다른 두 객체는 항상 주소가 다르다. 때문에 두 객체에 equals를 사용하면 항상 false가 나온다.

equals()의 오버라이딩

  • equals 메서드로 Value 인스턴스가 가지고 있는 value값을 비교하도록 할 수는 없을까?
    인스턴스 변수(iv)의 값을 비교하도록 equals를 오버라이딩 하면 된다.

hashCode()

  • 해싱 기법에 사용되는 해시함수, hash function을 구현한 것이다.
    해싱은 데이터 관리기법 중 하나로, 다량의 데이터를 저장하고 검색하는 데 매우 유용함.
  • 해시 함수는 찾고자하는 값을 입력하면, 그 값이 저장된 위치를 알려주는 해시코드(hashcode)를 반환한다.
    객체의 해시코드를 반환하는 메서드로, Object 클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환한다.
  • 일반적으로는 해시코드가 같은 두 객체가 존재하는 것이 가능하지만, Object 클래스에 정의된 hashCode 메서드는 객체의 주소값을 이용, 해시코드를 만들어 반환하기 때문에 서로 다른 두 객체는 결코 같은 해시코드를 가질 수 없다. 객체의 지문
  • 클래스의 인스턴스변수 값으로 객체의 같고 다름을 판단해야하는 경우, 즉equals()를 오버라이딩하면, hashcode()도 오버라이딩 해야한다.
    equals()의 결과가 true인 두 객체의 해쉬코드는 같아야 하기 때문.

toString()

  • 인스턴스에 대한 정보를 문자열(String)로 제공할 목적으로 정의한 것.
  • toString() : 객체를 문자열로 변환.
    인스턴스의 정보를 제공한다는 것은 대부분의 경우 인스턴스 변수에 저장된 값들을 문자열로 표현한다는 것이다.

toString()의 오버라이딩

  • 일반적으로 인스턴스나 클래스에 대한 정보 또는 인스턴스 변수들의 값을 문자열로 변환하여 반환하도록 오버라이딩 되는 것이 보통.

0개의 댓글