오토박싱은 기본 유형과 해당 래퍼 클래스 객체 간의 Java 컴파일러의 자동 변환입니다. 즉, int에서 Integer로, double에서 Double로의 변환입니다. Unboxing은 래퍼 클래스 객체에서 동등한 기본 유형으로의 자동 변환입니다. 즉, 정수에서 정수로. 이 기능은 Java 버전 1.5에서 도입되었습니다.
컴파일러는 내부적으로 valueOf() 메서드를 사용하여 프리미티브를 해당 래퍼 객체(예: 오토박싱)로 변환하고, 그 반대의 경우 unboxing 패러다임과 마찬가지로 intValue(), doubleValue() 등을 사용합니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
Java의 기본 유형과 래퍼 클래스 매핑은 다음과 같습니다.
Primitive type | Wrapper class |
boolean | Boolean |
byte | Byte |
char | Character |
float | Float |
int | Integer |
long | Long |
short | Short |
double | Double |
정수 ArrayList를 사용하여 언박싱 개념을 활용해 보겠습니다.
import java.util.ArrayList; public class MyClass { public static void main(String args[]) <em>{</em> ArrayList<Integer> intlist = new ArrayList<Integer>(); //wrapper Integer objects being added here intlist.add(1); interest.add(2); //auto-unboxing is happening here int x = intlist.get(0); System.out.println(x); } }
따라서 위의 예에서 x에 값을 추가하는 동안 x가 원시적인 것처럼 보이는 것을 알 수 있습니다. 결과적으로 할당이 완료되는 동안 여기에서 언박싱이 자동으로 수행됩니다.
public class MyClass { public static void main(String args[]) { Integer sum =0; for(int i=0;i<10;i++) { sum = sum + i; } System.out.println(sum); } }
아래에 있는 스니펫을 고려해 보세요. 이것의 결과는 무엇입니까?
public class Main { public static void main(String[] args) { Integer m = 34123; Integer x = 34123; System.out.println(x==m); } }
public class Main { public static void main(String[] args) { Integer m = 100; Integer x = 100; System.out.println(x==m); } }
리터럴 풀에 100이 있으므로 이는 "참" 값으로 평가됩니다.
public class Main { public static void main(String[] args) { Overload obj = new Overload(); int i =5; obj.printval(5); Integer m = i; obj.printval(m); } } class Overload { public void printval(int i) { System.out.println("printing the unboxed value "+ i); } public void printval(Integer i) { System.out.println("printing the autoboxed value "+ i); } }
출력:
참고: 모든 IDE에서 위 프로그램을 실행하여 위의 출력을 얻을 수 있습니다.우리는 오토박싱과 언박싱의 사용 사례와 이 개념이 얼마나 암시적인지, 그리고 장단점을 살펴보았습니다. 코딩할 때 주의해서 사용해야 합니다. 그렇지 않으면 불필요한 계산 변환 오버헤드가 추가될 수 있습니다. 결과적으로 과도한 가비지 수집 오버헤드와 임시 개체 생성을 방지하려면 기본 형식에서 변환을 수행해야 합니다. 또한 Java의 오버로드 개념을 사용한 오토박싱의 사용 사례도 살펴보았습니다. 이와 함께 몇 가지 제약사항을 더 확인하실 수 있습니다.
위 내용은 Java의 오토박싱 및 언박싱의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!