본문 바로가기
  • soobinhand의 기술 블로그
도서/자바 프로그래밍 언어 - James Gosling

[자바 프로그래밍 언어] 8장 기본 타입과 래퍼 클래스

by soobinhand 2021. 12. 27.
728x90

8.1     공통 필드와 메소드

  • 자바는 기본 타입과 이에 대응하는 래퍼 클래스간의 변환을 자동으로 해줌.
  • Integer value = 3; 이게 가능하다.
  • 박싱 변환 : 기본 값을 래퍼 객체로 변환 ( wrap과 box는 거의 비슷한 의미)
  • 언박싱 변환 : 래퍼 객체에서 기본 값을 추출하는 것
  • 래퍼 클래스는 감싸고 있는 기본 값을 불변 객체로 정의한다.
  • new Integer(1)로 생성된 객체는 항상 1을 가지며 이 값을 수정할 수 없다.
  • 래퍼 클래스는 다음과 같은 메소드를 가진다.
    • public static Type valueOf(Type t)
    • t 값을 가지는 지정된 Type의 객체를 반환한다.
    • public static Type valueOf(String str)
    • str를 변환한 값을 가지는 지정된 Type의 객체를 반환한다.
  • 이 메소드들은 인스턴스를 생성해서 반환하거나 저장된 인스턴스를 반환한다.
  • Boolean을 제외한 각각의 래퍼 클래스들은 다음과 같은 세 개의 필드를 정의하고 있다.
    • public static final type MIN_VALUE
    • 데이터 타입이 표현할 수 있는 최솟값
    • public static final type MAX_VALUE
    • 최댓값
    • public static final int SIZE
    • 타입을 표현하기 위해 사용되는 비트의 수 - Integer는 32
    • public static final Class<Type> TYPE
    • 타입을 표현하는 Class 객체 참조.
  • 래퍼 클래스들은 Comparable<T>를 구현하고 있다.
    • public int compareTo(Type other)
    • 이 메소드가 호출된 객체가 매개변수로 전달된 객체보다 작거나 같거나 크다면 0보다 작거나 같거나 큰 값을 반환한다.
    • public type typeValue()
    • 현재 래퍼 객체에 대응되는 기본 값을 반환한다. 예를 들어, Integer.valueOf(6).intValue()는 6을 반환한다.
  • 클래스들은 Object의 다음 멤버를 오버라이드하고 있다.
    • public String toString()
    • 래퍼 객체의 값을 문자열 표현으로 반환한다.
    • public boolean equals(Object obj)
    • 두 객체가 동일한 타입이고 동일 값을 가진다면 true를 반환.

8.2     Void

  • Void클래스는 지금까지 살펴본 규칙들이 적용되지 않는다.

8.3     Boolean

  • Boolean클래스는 boolean타입을 클래스로 나타낸다. 문자열을 해석하는 생성자와 valueOf 메소드 그리고 parseBoolean 메소드는 모두 "true" 를 대소문자를 혼합하여 표현하더라도 true로 이해한다.

8.4     Number

  • Number 클래스는 기본 숫자 타입을 표현하는 래퍼 클래스인 Byte, Short, Integer, Long, Float, Double이 확장하고 있는 추상 클래스이다.
  • Float 객체가 32.87 을 가지고 있다면 이 객체에서 intValue를 호출하면 32를 반환. (int) 32.87임
  • 정수 타입은 Byte, Short, Integer, Long이다. 다음과 같은 메소드도 제공하고 있다.
    • public static type parseType(String str, int radix)
    • 문자열을 radix기준으로 지정된 타입의 정수 값으로 변환.
    • Integer.parseInt("1010", 2) -> 10, Integer.parseInt("-1010", 2) -> -10
    • public static Type valueOf(String str, int radix)
    • parseInt와 거의 비슷하다. 기본 int가 필요하면 parseInt, 래퍼 객체가 필요하면 valueOf

8.5     Character 클래스

  • char c = Character.toLowerCase('A') -> a
  • char c = Character.toUpperCase('a') -> A
  • char c = Character.isDigit('1') -> true

8.6     박싱 변환

  • 기본 타입을 래퍼 클래스의 인스턴스로 자동 변환하는 것을 박싱 변환이라고 한다. 그 이유는 래퍼 객체가 기본 타입의 값을 가지고 있는 박스와 같기 때문이다.
728x90

댓글