[JAVA] Object 클래스

hi·2022년 1월 18일
0

toString( )

  • 객체 정보를 문자열로 변경
  • 기본 형태
    : 클래스 이름 @ 해쉬코드 값

단, String, Integer 클래스는 미리 재정의 되어 있어서 출력 값이 다름

equals( )

  • 두 인스턴스의 주소 값을 비교하여 boolean 타입으로 리턴
  • 서로 다른 주소 값을 가질 때도 같은 인스턴스라고 정의할 수 있는 경우가 있음. 따라서 equals() 를 재정의하여 논리적으로 같은 인스턴스인지 확인

물리적 동일성 : 메모리 주소 ( == 사용 )
논리적 동일성 : 값 ( equals 사용 )

hashCode( )

  • 같은 인스턴스라면 반환하는 해쉬코드 값도 같다
  • 논리적으로 같은 두 객체도 같은 해쉬코드를 반환하도록 재정의

=> equals() 재정의했다면 hashCode()도 재정의

clone( )

  • 객체 원본을 유지해 놓고 복사본을 사용하거나
    기본 틀의 복사본을 사용해 동일한 인스턴스를 만들어 복잡한 생성 과정을 간단히 하려는 경우 사용

  • clone() 사용 시 원본 객체는 반드시 cloneable 인터페이스를 명시

class 클래스명 implements Cloneable {

}
  • 명시하지 않으면 CloneNotSupportedException 예외 발생

1) 얕은 복사

  • 멤버변수만 복제

  • 기본 타입 : 값 복사
    클래스 타입 : 주소 복사

객체를 통째로 복사하지만 객체가 참조하는 또 다른 객체까지
복사하지 못 함

👉 복제 객체에서 참조하는 객체의 값, 주소를 변경하면
원본 객체가 참조하는 객체의 값, 주소도 변경된다 (단, String 제외)

2) 깊은 복사

  • 객체 복사 후 객체가 참조하는 또 다른 객체까지 복사
  • 깊은 복사 대상 : 배열 , 클래스 타입

0개의 댓글