Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 깊은 복사
- Stream
- singletone
- 셔뱅
- lambda
- 자바
- dbeaver
- has-a
- constructor
- 내부클래스
- Up Casting
- Java
- extends
- Inbound
- generic programming
- 얕은 복사
- arraycopy
- pycharm
- Wrapper class
- finalize
- public static final
- 파이참
- 엔드포인트
- parameter group
- identityHashCode
- shebang
- 스트림
- access modifier
- node.js
- down casting
Archives
- Today
- Total
٩(๑•̀o•́๑)و
20200307 - Object Class 본문
Object class
- 자바의 모든 클래스의 최상위 클래스
- java.lang.Object 클래스 - java.lang package - 자바 설치 위치의 jdk/lib/src.zip에서 java.base/java/lang으로 존재.
- java.lang패키지는 컴파일러가 자동으로 import해줌 - 별도로 import문을 쓰지 않음
- 모든 클래스는 Object 클래스를 상속받음 - 모든 클래스는 사실 extends Object 임 - 컴파일러가 자동으로 넣어줌.
- 모든 클래스는 Object 클래스의 메서드를 사용할 수 있음
- 모든 클래스는 Object 클래스의 일부 메서드(final이 아닌 것)를 재정의하여 사용할 수 있음 - final로 정의된 메서드들은 하위 클래스에서 재정의 불가
- https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
- final로 선언된 몇몇 메서드가 존재 - wait, getClass, notify, notifyAll 등
- wait, notify, notifyAll은 쓰레드프로그래밍에서 사용
- 모든 클래스들은 Object class로 자동 형변환이 된다. Object class에서 다시 원래의 형으로 다운캐스팅 역시 가능
Object클래스의 toString() 메서드
- 원형 : getClass().getName() + '@' + Integer.toHexString(hashCode())
- 객체의 정보를 String으로 바꾸어 사용할 때 유용함
- 자바 클래스 중에는 이미 정의된 클래스가 많음. (ex. String, Integer, Calendar 등)
- 많은 클래스에서 재정의하여 사용
Object클래스의 equals() 메서드
- 두개의 인스턴스가 동일한지를 보여주는 메서드
- 두 객체의 동일함을 논리적으로 재정의할 수 있음
- 물리적 동일함 : 같은 주소를 가지는 객체. 즉 같은 객체.
- 논리적 동일함 : 같은 학번의 학생, 같은 주문번호의 주문 등
- 물리적으로 다른 메모리에 위치한 객체라도 논리적으로 동일함을 구현하기 위해 사용하는 메서드
- Object의 equals()는 기본적으로 x==y와 동일
- String 에서는 이를 객체가 가리키는 문자열 내용이 동일한지로 재정의
Object클래스의 hashCode() 메서드
- 반환값 : 인스턴스가 저장된 가상머신의 주소를 10진수로 변환
- 객체가 같다는 의미는 두 객체의 해시코드값이 같다는 의미와 동일
- 두개의 서로 다른 메모리에 위치한 인스턴스가 동일하다는 것의 의미 : 논리적으로 동일하고(equals()의 반환값이 true) hashCode()의 반환값이 동일해야함 ==> equals()가 true일때 해시코드값도 동일한 값이 반환될 수 있도록 hashCode()를 오버라이딩했을뿐 실제 메모리주소가 바뀌는 것은 아니다.
- 실제 메모리 주소는 System.identityHashCode() 메서드로 얻을 수 있다.
Object클래스의 clone() 메서드
- 객체의 복사본을 만듦
- 기본 틀(prototype)으로 부터 같은 속성 값을 가진 객체의 복사본을 생성할 수 있음
- 생성자와는 다른 의미임. 인스턴스의 상태 자체를 그대로 복사해오는 것이기때문에 private변수의 값까지 복사가 된다.
- 객체지향 프로그래밍의 정보은닉에 위배되는 가능성이 있으므로 복사할 객체는 Cloneable 인스턴스를 명시해야함 - 복사 대상이 되는 객체의 클래스에 implements Cloneable 을 명시해야함. 그렇지 않을 경우 CloneNotSupportedException발생
Object클래스의 finalize()메서드
- 직접 호출하는 메서드가 아님
- 인스턴스가 힙메모리에서 해제될때 GC에서 호출되는 메서드
- 이 메서드가 정의되어있으면 GC에서 이걸 수행
- 내부적으로 리소스의 해제, 아직 않는 소켓 닫기 등의 일을 수행
'Java' 카테고리의 다른 글
20200308 - Generic 프로그래밍 (0) | 2020.03.08 |
---|---|
20200308 - String, Wrapper Class (0) | 2020.03.08 |
20200307 - 인터페이스 (0) | 2020.03.07 |
20200306 (0) | 2020.03.06 |
20200305 (0) | 2020.03.06 |