java.lang
: 자바가 기본으로 제공하는 라이브러리중 가장 기본이 되는 패키지이다.
java.lang 패키지의 대표적인 클래스들
- Obejct: 모든 자바 객체의 부모 클래스
- String: 문자열
- Integer, Long, Double: 래퍼 타입, 기본형 데이터 타입을 객체로 만든 것
- Class: 클래스 메타 정보
- System: 시스템과 관련된 기본 기능들을 제공
Object 클래스
: 클래스에 상속 받을 부모 클래스가 없으면 묵시적으로 Object 클래스를 상속 받는다.
- 공통 기능 제공
- 다형성의 기본 구현
Object 클래스가 제공하는 기능
- 객체의 정보를 제공하는 toString()
- 객체의 같음을 비교하는 equals()
- 객체의 클래스 정보를 제공하는 getClass()
- 기타 등등
Object를 활용한 다형성의 한계
- Object는 모든 객체를 대상으로 다형적 참조를 할 수 있다.
- Object를 통해 전달 받은 객체를 호출하려면 각 객체에 맞는 다운캐스팅 과정이 필요하다.
equeals() - 동일성과 동등성
자바는 두 객체가 같다라는 표현을 2가지로 분리해서 제공한다.
- 동일성(Identity): == 연산자를 사용해서 두 객체의 참조가 동일한 객체를 가지고 있는지 확인
- 동등성(Equality): equals() 메서드를 사용하여 두 객체가 논리적으로 동등한지 확인
User userA = new User("id-1") //참조 x001
User userB = new User("id-1") //참조 x002
System.out.println("identity = " + (userA == userB));
System.out.println("equality = " + (userA.equals(userB))); //equals() 오버라이딩 했을경우
//Object가 기본으로 제공하는 equals()는 ==으로 동일성 비교를 제공한다.
//---------결과------
//false
//true
물리적으로 다른 메모리에 있는 다른 객체이지만, 회원 번호 기준으로 볼 땐 논리적으로는 같은 회원으로 볼 수 있음
-> 따라서 동일성을 다르지만, 동등성은 같다.
출처 - 김영한의 실전 자바 중급
'Backend > Java' 카테고리의 다른 글
String 클래스 (0) | 2024.08.07 |
---|---|
불변객체 (0) | 2024.08.07 |
객체지향프로그래밍 (0) | 2024.08.07 |
다형성 활용 (0) | 2024.08.07 |
다형성(Polymorphism) (0) | 2024.08.06 |