java.lang패키지(7) - 래퍼(Wrapper) 클래스

2021. 12. 28. 10:45·자바/java.lang 패키지

1. 래퍼(Wrapper) 클래스

- 때로는 기본형 변수도 어쩔 수 없이 객체로 다뤄야 할 때, 기본형 값들을 객체로 변환하여

작업을 수행해야 한다. 이때, 사용되는 것이 래퍼 클래스이다.

 

- 래퍼 클래스를 이용하면 기본형 값을 객체로 다룰 수 있다.

 

- 래퍼 클래스의 생성자는 매개변수로 문자열이나 각 자료형의 값들을 인자로 받는다.

이 때, 주의해야 할 것은 각 자료형에 알맞은 문자열을 사용해야 한다는 것이다.

 

- 예를 들어, new Integer("1.0")을 실행하면 NumberFormatException이 발생한다.

 

 

 

 

1-1. 래퍼 클래스의 생성자들

- Boolean, Character, Byte, Short, Integer, Long, Float, Double 이 있는데, 모두 생성자를 만들 수 있다.

 

- 주의할 점은 모두 앞에 대문자이다.

 

 

- 또한 래퍼 클래스를 이용해서 아래의 코드처럼 상수 사용도 가능하다.

 

 

 

 

1-2. Number 클래스

- Number 클래스는 기본적으로 객체가 가지고 있는 값을 숫자와 관련된 기본형으로 변환하여 반환하는 메서들을 

정의한다.

 

- 이 클래스는 추상클래스로 내부적으로 숫자를 멤버변수로 갖는 래퍼 클래스들의 조상이다.

 

 

- 아래의 그림을 보면 래퍼 클래스들은 모두 Number 클래스의 자손이다.

 

- BigInteger는 long으로도 다룰 수 없는 큰 범위의 정수를 다루기 위해 사용된다.

 

- BigDecimal은 double로도 다룰 수 없는 큰 범위의 부동 소수점을 처리하기 위해 사용된다.

 

 

 

 

1-3. 문자열을 숫자로 변환하기.

(1) 문자열 -> 기본형

 

(2) 문자열 -> 래퍼 클래스

 

- 사실, JDK 1.5부터 '오토박싱'에 의해서 (1)과 (2)의 차이가 없어졌다. 그러나 ,성능면에서는 valueOf()가 조금 더 느리다.

( 오토박싱에 대한 설명은 아래의 설명글을 보고 이해하자. )

 

 

- 또한 (1)과 (2)는 진법(radix)를 사용할 수 있다.

( 사용 방법은 간단하다. 아래의 코드를 보자. )

 

( 그러나, 변수 i4를 실행 시, NumberFormatException 오류가 나오게 된다. )

 

 

 

 

1-4. 오토박싱 & 언박싱

- JDK 1.5 이전에는 기본형과 참조형 간의 연산이 불가능했기 때문에, 래퍼 클래스로 기본형을 객체로

만들어서 계산해야 했다.

 

- 아래의 코드처럼 원래는 JDK 1.5 이전에는 불가능 했던 것이 지금은 자동으로 넣어주기 때문에 가능하다.

컴파일 전의 코드 컴파일 후의 코드

 

 

- 이 외에도 내부적으로 객체 배열을 가지는 Vector 클래스와 ArrayList 클래스에 기본형 값을 저장해야

할 때나 형변환이 필요할 때도 컴파일러가 자동적으로 추가해준다.

 

 

- 오토박싱과 언박싱은 아래의 코드와 같다.

 

 

( 오토박싱: 기본형 값 -> 래퍼 클래스의 객체 )

( 언박싱: 래퍼 클래스의 객체 -> 기본형 값 )

'자바 > java.lang 패키지' 카테고리의 다른 글

java.lang패키지(6) - Math 클래스  (0) 2021.12.27
java.lang패키지(5) - StringBuffer 클래스와 StringBuilder 클래스  (0) 2021.12.26
java.lang패키지(4) - String 클래스(2)  (0) 2021.12.26
java.lang패키지(3) - String 클래스(1)  (0) 2021.12.24
java.lang 패키지(2) - Object 클래스(2)  (0) 2021.12.24
'자바/java.lang 패키지' 카테고리의 다른 글
  • java.lang패키지(6) - Math 클래스
  • java.lang패키지(5) - StringBuffer 클래스와 StringBuilder 클래스
  • java.lang패키지(4) - String 클래스(2)
  • java.lang패키지(3) - String 클래스(1)
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      java.time 패키지
      java.lang패키지
      serializable
      선택 정렬
      TCP 소켓 프로그래밍
      코딩트리조별과제
      문자 기반 스트림
      역직렬화
      알고스팟
      다형성
      자바 개념
      snail
      file
      ServerSocket
      코드트리
      안정 정렬
      안드로이드 스튜디오
      중간연산
      map()
      InputStream
      Arrays
      소켓 프로그래밍
      스트림
      outputstream
      Collections Framework
      제자리 정렬
      유용한 클래스
      불안정 정렬
      코딩테스트
      람다식
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    java.lang패키지(7) - 래퍼(Wrapper) 클래스
    상단으로

    티스토리툴바