Backend/Java

java.lang

Coffebara 2024. 8. 7. 14:49

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


물리적으로 다른 메모리에 있는 다른 객체이지만, 회원 번호 기준으로 볼 땐 논리적으로는 같은 회원으로 볼 수 있음
-> 따라서 동일성을 다르지만, 동등성은 같다.

 

 

출처 - 김영한의 실전 자바 중급