반응형
해당 페이지에서는 자주 사용하는 개발 패턴으로 "기본 자료형을 래퍼 클래스로 변환(Boxing)하거나 래퍼 클래스를 기본 자료형으로 변환(Unboxing)”하는 방법에 대해서 공유합니다.
1) 기본 자료형(Primitive Data Type)을 래퍼 클래스(Wrapper Class)로 박싱(Boxing) 방법
💡 기본 자료형(Primitive Data Type)을 래퍼 클래스(Wrapper Class)로 박싱(Boxing) 하는 방법에 대해서 알아봅니다.
💡 Java에서는 기본 자료형(primitive data types)을 객체로 다룰 수 있도록 래퍼 클래스(wrapper class)를 제공합니다.
💡 래퍼 클래스는 기본 자료형의 값을 감싸는 역할을 하며, 이를 통해 기본 자료형을 객체로 다룰 수 있습니다. 이러한 래퍼 클래스를 이용하여 기본 자료형을 박싱(boxing)하는 방법입니다.
1. Java 기본 함수를 이용한 Boxing
/**
* Boxing 사용예제 -1
* Integer(), Integer.valueOf()를 통해 Boxing을 수행합니다.
*
* @param num
* @return
*/
public Integer CastBoxing(int num) {
Integer rstInteger = 0;
/*
* Java 1.5 이상 버전의 경우 - 오토박싱 (Auto Boxing)으로 별도의 수동적 처리 없이 Boxing 된다.
* 기본 자료형 -> 래퍼 클래스 변환
*/
// [Java v1.5이상] 박싱 (Boxing) - 기본 자료형 -> 래퍼 클래스
int aInt = 3;
int bInt = 4;
Integer aInteger = aInt;
Integer bInteger = bInt;
System.out.println("aInteger :: " + aInteger + " bInteger ::" + bInteger);
/*
* [CASE1] 박싱(Boxing) 방법
* Java 1.5 미만 버전의 경우 - 박싱(Boxing)으로 수동적인 처리로 Boxing 해야했다.
* 기본 자료형 -> 래퍼 클래스 변환
*/
int aInt2 = 3;
int bInt2 = 4;
Integer aInteger2 = new Integer(aInt2);
Integer bInteger2 = new Integer(bInt2)
System.out.println("aInteger2 :: " + aInteger2 + " bInteger2 ::" + bInteger2);
/*
* [CASE2] 박싱(Boxing) 방법
* Java 1.5 미만 버전의 경우 - 박싱(Boxing)으로 수동적인 처리로 Boxing 해야했다.
* 기본 자료형 -> 래퍼 클래스 변환
*/
int num2 = 10;
Integer boxedNum = Integer.valueOf(num2);
double num3 = 3.14;
Double boxedNum2 = Double.valueOf(num3);
char c = 'a';
Character boxedChar = Character.valueOf(c);
boolean b = true;
Boolean boxedBool = Boolean.valueOf(b);
return rstInteger;
}
2. Stream API의 박싱: Arrays.stream().boxed()
/**
* Boxing 사용예제 -2
* stream().boxed() 함수를 이용합니다.
*
* @param num
* @return
*/
public Integer[] CastBoxing2(int[] numArr) {
Integer[] resultIntegerArr = Arrays.stream(numArr).boxed().sorted(Comparator.reverseOrder()).toArray(Integer[]::new);
return resultIntegerArr;
}
2) 래퍼 클래스(Wrapper Class)를 기본 자료형(Primitive Data Type)으로 언박싱(Unboxing) 방법
💡 래퍼 클래스(Wrapper Class)를 기본 자료형(Primitive Data Type)으로 언박싱(Unboxing) 하는 방법에 대해서 알아봅니다.
💡Java에서 Unboxing은 Wrapper class를 primitive type으로 자동으로 변환하는 것을 말합니다. 이를 통해 객체와 기본 자료형 간의 변환을 자동으로 처리할 수 있습니다.
1. Java 기본 함수를 이용한 Unboxing
/**
* Unboxing 사용예제 -1
* int 대입, Integer.intValue() 사용
*
* @param integer
* @return
*/
public int CastUnBoxing1(Integer integer) {
int rstInt = 0;
/*
* Java 1.5 이상 버전의 경우 - 오토 언박싱 (Auto UnBoxing)으로 별도의 수동적 처리 없이 UnBoxing 된다.
* 래퍼 클래스 -> 기본 자료형
*/
Integer cInteger = 3;
Integer dInteger = 4;
int cInt = cInteger;
int dInt = dInteger;
System.out.println("cInt :: " + cInt + " dInt :: " + dInt);
/*
* Java 1.5 미만 버전의 경우 - 박싱(UnBoxing)으로 수동적인 처리로 UnBoxing 해야했다.
* 래퍼 클래스 -> 기본 자료형
*/
Integer cInteger2 = new Integer(3);
Integer dInteger2 = new Integer(4);
int cInt2 = cInteger2.intValue();
int dInt2 = dInteger2.intValue();
System.out.println("cInt2 :: " + cInt2 + " dInt2 :: " + dInt2);
return rstInt;
}
2. Stream API를 이용한 Unboxing: mapToInt()
💡 해당 메서드는 스트림 내에 래퍼 클래스를 기본 자료형으로 변환하는 언박싱을 수행하는 함수입니다.
/**
* Boxing 사용예제 -2
* stream().boxed() 함수를 이용합니다.
*
* @param numArr
* @return
*/
public Integer[] CastBoxing2(int[] numArr) {
Integer[] resultIntegerArr = Arrays.stream(numArr).boxed().sorted(Comparator.reverseOrder()).toArray(Integer[]::new);
return resultIntegerArr;
}
💡 [참고] 다른 기본 자료형의 언박싱
함수 | 설명 |
mapToInt | int 타입으로 언박싱합니다. |
mapToLong | long 타입으로 언박싱합니다. |
mapToDouble | double 타입으로 언박싱합니다. |
flatMapToInt | 각 요소를 int 타입으로 언박싱하고, 모든 스트림 요소를 단일 int 스트림으로 평면화합니다. |
flatMapToLong | 각 요소를 long 타입으로 언박싱하고, 모든 스트림 요소를 단일 long 스트림으로 평면화합니다. |
flatMapToDouble | 각 요소를 double 타입으로 언박싱하고, 모든 스트림 요소를 단일 double 스트림으로 평면화합니다. |
오늘도 감사합니다. 😀
반응형
'Java > Short 개발' 카테고리의 다른 글
[Java/Short] String <-> int 변환 방법 : 부호(+, -) 포함 여부 (0) | 2023.02.26 |
---|---|
[Java/Short] Array, ArrayList 정렬(Sort) 방법 (0) | 2023.02.22 |
[Java/Short] N진법 <-> 정수(10진법) 변환 방법: + N진법간 합 방법 (0) | 2023.02.21 |
[Java/Short] String <-> ASCII Code 변환 방법 (0) | 2023.02.21 |
[Java/Short] Array <-> ArrayList 변환 방법 (0) | 2023.02.21 |