English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서 예제를 통해 Java 패키지 클래스(Wrapper)를 배웁니다.
Java에서 패키지 클래스는 원시형(int, char, float 등)을 해당 객체로 변환하는 데 사용됩니다.
8각 기본형마다 해당 패키지 클래스가 있습니다.
원시형 | 패키지 클래스 |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
valueOf() 메서드를 사용하여 원시형을 해당 객체로 변환할 수 있습니다.
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() 등)을 사용할 수 있습니다.
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;
주의기본 타입은 해당 객체보다 효율적입니다. 따라서, 효율성이 필요할 때는 항상 원시 타입을 사용하는 것이 좋습니다.