ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]STEP1 - 16) java.lang과 java.util 패키지, Object 클래스, Objects 클래스
    개발 공부/Java 2020. 10. 7. 22:32

     

    본 게시글은 도서 "이것이 자바다" 동영상 강의를 듣고 기록하는 TIL(Today I Learned) 입니다.
    모든 저작권은 출판사 한빛미디어와 신용권님께 있음을 알립니다.👍

     

     

    이번 게시글에서는 java.lang, java.util 패키지에는 어떤 클래스가 있는지 살펴보고

    Object와 Objects 클래스의 대표적인 메소드 들에 대해서 알아보겠습니다.

     

     

     

    1. java.lang과 java.util 패키지


    1-1) java.lang 패키지

    :  java.lang 패키지는 자바 프로그램의 기본적인 클래스를 담고 있는 패키지이다.

    :  이 패키지에 있는 클래스와 인터페이스는 import 문 없이도 사용 가능하다.

    클래스 용도
    Object 자바 클래스의 최상위 클래스
    System - 표준 입력 장치로부터 데이터를 입력받을 때 사용
    - 표준 출력 장치로부터 출력하기 위해 사용
    - 자바 가상 기계를 종료시킬 때 사용
    - 쓰레기 수집기를 실행 요청할 때 사용
    Class 클래스를 메모리로 로딩할 때 사용
    String 문자열을 저장하고 여러 가지 정보를 얻을 때 사용
    StringBuffer, StringBuilder 문자열을 저장하고 내부 문자열을 조작할 때 사용
    Math 수학 함수를 이용할 때 사용
    Wrapper
    : Byte, Short, Character, Integer,
      Float, Double, Boolean, Long
    - 기본 타입의 데이터를 갖는 객체를 만들 때 사용
    - 문자열을 기본 타입으로 변환할 때 사용
    - 입력값 검사에 사용

     

     

    1-2) java.util 패키지

    :  java.util 패키지는 자바 프로그램 개발에 조미료 같은 역할을 하는 클래스를 담고 있다.

    클래스 용도
    Arrays 배열을 조작할 때 사용
    Calendar 운영체제의 날짜와 시간을 얻을 때 사용
    Date 날짜와 시간 정보를 저장하는 클래스
    Objects 객체 비교, null 여부 등을 조사할 때 사용
    StringTokenizer 특정 문자로 구분된 문자열을 뽑아낼 때 사용
    Random 난수를 얻을 때 사용
    그 외 대부분은 컬렉션 클래스들이 차지

     


     

    2. Object 클래스


    클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속한다.

    자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스라고 할 수 있다.

     

    대표 메소드 사용
    equals() -  객체의 동등을 비교한다.
    -  A.equals(B); 로 사용하며 A == B 와 동일한 리턴값을 반환한다.
    -  A 객체와 B 객체가 참조하는 주소값이 동일하면 True, 아니면 False를 반환한다.
    -  A 객체의 값과 B 객체의 값이 논리적으로 동등한지 알고 싶다면 equals() 를 오버라이딩해야 한다.
    hashCode() -  객체의 메모리 번지를 이용해서 해시코드를 만들어 반환한다.
    -  hashCode()의 리턴값과 equals()의 리턴값이 모두 같아야 동등한 객체로 판별한다.
    -  논리적으로 동등한 객체일 경우, 동일한 해시코드가 리턴되도록 하기 위해서는
        Object의 equals() 와 hashCode() 둘 다 메소드 오버라이딩 해야한다.
    toString() -  객체의 문자 정보를 반환한다.
    -  Object의 toString() 메소드는 "클래스명@16진수해시코드"의 형태로 반환한다.
    -  유익한 정보를 반환하기 위해서는 toString()을 오버라이딩하여 사용한다.
    clone() - 얕은 복제(thin clone) -  단순히 필드값을 복사해서 객체를 복제하는 것을 말한다.
    -  기본 타입일 경우 단순 값 복사가 일어나고, 참조 타입일 경우 객체의 번지가 복사된다.
    -  따라서 참조 타입의 경우 복사본의 값을 변경하면 원본의 값도 변경된다.
    -  복제가 가능하기 위해서는 원본에서 java.lang.Cloneable 인터페이스를 구현하고 있어야한다.
    clone() - 깊은 복제(deep clone) -  필드값과 참조하고 있는 객체도 모두 복제하는 것을 말한다.
    -  따라서 참조 타입 또한 복사본의 값을 변경해도 원본의 값은 변경되지 않는다.
    -  이를 위해서는 clone() 메소드를 오버라이딩하여 참조 객체를 복제하는 코드를 직접 작성해야한다.
    finalize() -  쓰레기 수집기(Garbage Collector)가 객체를 소멸하기 직전에 마지막으로 실행하는 메소드이다.
    -  하지만 소멸 시 무작위 소멸, 일부 소멸, 소멸 안됨 등의 현상이 있으므로 호출 시점이 불명확하다.

     


     

    3. Objects 클래스


    java.util.Objects 클래스는 객체 비교, 해시코드 생성, null 여부, 객체 문자열 리턴 등의 연산을 수행하는 정적 메소드들로 구성된 Object의 유틸리티 클래스이다.

     

    메소드(매개 변수) 사용
    compare(T a, T b, Comparator<T> c) 두 객체 a와 b를 Comparator를 사용해서 비교
    deepEquals(Object a, Object b) 두 객체의 깊은 비교(배열의 항목까지 비교)
    equals(Object a, Object b) 두 객체의 얕은 비교(번지만 비교)
    hash(Object...values) 매개값이 저장된 배열의 해시코드 생성
    hashCode(Object o) 객체의 해시코드 생성
    isNull(Object obj) 객체가 null인지 조사
    nonNull(Object obj) 객체가 null이 아닌지 조사
    requireNonNull(T obj) 객체가 null인 경우 예외 발생
    requireNonNull(T obj, String message) 객체가 null인 경우 예외 발생(주어진 예외 메시지 포함)
    requireNonNull(T obj, Supplier<String> messageSupplier) 객체가 null인 경우 예외 발생(람다식이 만든 예외 메시지 포함)
    toString(Object o) 객체의 toString() 리턴값 리턴
    toString(Object o, String nullDefault) 객체의 toString() 리턴값 리턴, 첫 번째 매개값이 null일 경우
    두 번째 매개값 리턴

     

     

    본 게시글은 여기서 마치겠습니다.

    읽어주셔서 감사하고, 혹시나 틀린 부분이나 보완해야할 부분이 있다면 댓글에 남겨주세요~!

    댓글

Designed by Tistory.