English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 가이드

Java 흐름 제어

Java 배열

Java 오브젝트 지향(I)

Java 오브젝트 지향(II)

Java 오브젝트 지향(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map集合

Java Set集合

Java 입력출력(I/O)

Java Reader/Writer

Java 다른 주제

Java 包装 클래스(Wrapper)

이 튜토리얼에서 예제를 통해 Java 패키지 클래스(Wrapper)를 배웁니다.

Java에서 패키지 클래스는 원시형(int, char, float 등)을 해당 객체로 변환하는 데 사용됩니다.

8각 기본형마다 해당 패키지 클래스가 있습니다.

원시형패키지 클래스
byteByte
booleanBoolean
charCharacter
doubleDouble
floatFloat
intInteger
longLong
shortShort

기본형을 包装객체로 변환

valueOf() 메서드를 사용하여 원시형을 해당 객체로 변환할 수 있습니다.

예제1:패키지 대상의 원시형

class Main {
  public static void main(String[] args) {
    //원시형 생성
    int a = 5;
    double b = 5.65;
    //패키지 대상으로 변환
    Integer aObj = Integer.valueOf(a);
    Double bObj = Double.valueOf(b);
    if(aObj instanceof Integer) {
      System.out.println("Integer 대상을 생성합니다.");
    }
    if(bObj instanceof Double) {
      System.out.println("Double 대상을 생성합니다.");
    }
  }
}

출력 결과

Integer 대상을 생성합니다.
Double 대상을 생성합니다.

위의 예제에서, 원시형을 대상으로 변환하는 방법을valueOf() 메서드를 사용했습니다.

여기서, 생성된 대상이 Integer나 Double 유형에 속하는지 확인하기 위해 instanceof 연산자를 사용했습니다.

하지만, Java 컴파일러는 원시형을 해당 대상으로 직접 변환할 수 있습니다. 예를 들어,

int a = 5;
//대상으로 변환
Integer aObj = a;
double b = 5.6;
//대상으로 변환
Double bObj = b;

이 과정은자동装箱. 더 많은 정보를 얻으려면 방문하십시오Java 자동装箱과 해装箱.

주의:우리는 또한 원시형을 패키지 대상(Wrapper) 생성자로 변환할 수 있습니다.하지만 Java 9그런 다음, 생성자를 더 이상 사용하지 않습니다..

패키지 대상을 원시형으로 변환

대상을 원시형으로 변환하려면, 각 패키지 클래스에对应的 값 메서드(intValue(), doubleValue() 등)을 사용할 수 있습니다.

예제2:패키지 대상을 원시형으로 변환

class Main {
  public static void main(String[] args) {
    //패키지 클래스 대상 생성
    Integer aObj = Integer.valueOf(23);
    Double bObj = Double.valueOf(5.55);
    //원시형으로 변환
    int a = aObj.intValue();
    double b = bObj.doubleValue();
    System.out.println("a의 값: "); + a);
    System.out.println("b의 값: "); + b);
  }
}

출력 결과

a의 값: 23
b의 값: 5.55

위의 예제에서, intValue()와 doubleValue() 메서드를 사용하여 Integer와 Double 대상을 해당 원시 기본형으로 변환했습니다.

하지만, Java 컴파일러는 대상을 해당 원시형으로 자동으로 변환할 수 있습니다. 예를 들어,

Integer aObj = Integer.valueOf(2);
//int 타입으로 변환
int a = aObj;
Double bObj = Double.valueOf(5.55);
//double 타입으로 변환
double b = bObj;

이 과정은해装箱. 더 많은 정보를 얻으려면 방문하십시오Java 자동装箱과 해装箱.

包装 클래스의 장점

  • Java에서는 종종 객체 대신 원시 데이터 타입을 사용할 필요가 있을 수 있습니다. 예를 들어, 콜렉션을 사용할 때.

    // 에러
    ArrayList<int> list = new ArrayList<>();
    //정상 실행
    ArrayList<Integer> list = new ArrayList<>();

    이 경우, 包装 클래스는 원시 데이터 타입을 객체로 사용할 수 있도록 도와줍니다.

  • 빈 값을 包装 객체에 저장할 수 있습니다. 예를 들어,

    //오류가 발생합니다
    int a = null;
    // 정상 실행
    Integer a = null;

주의기본 타입은 해당 객체보다 효율적입니다. 따라서, 효율성이 필요할 때는 항상 원시 타입을 사용하는 것이 좋습니다.