logo

Autoboxen en unboxen:

De automatische conversie van primitieve gegevenstypen naar het equivalente Wrapper-type staat bekend als boxing en de tegenovergestelde werking staat bekend als unboxing. Dit is de nieuwe functie van Java5. De Java-programmeur hoeft dus de conversiecode niet te schrijven.

Voordeel van Autoboxing en Unboxing:

Er is geen handmatige conversie tussen primitieven en Wrappers nodig, dus er is minder codering vereist.

Eenvoudig voorbeeld van Autoboxing in Java:

 class BoxingExample1{ public static void main(String args[]){ int a=50; Integer a2=new Integer(a);//Boxing Integer a3=5;//Boxing System.out.println(a2+' '+a3); } } 
Test het nu
 Output:50 5 
download dit voorbeeld

Eenvoudig voorbeeld van unboxen in Java:

De automatische conversie van het wrapper-klassetype naar het overeenkomstige primitieve type staat bekend als Unboxing. Laten we het voorbeeld van unboxen bekijken:

 class UnboxingExample1{ public static void main(String args[]){ Integer i=new Integer(50); int a=i; System.out.println(a); } } 
Test het nu

Uitgang:

 50 

Autoboxing en Unboxing met vergelijkingsoperatoren

Autoboxing kan worden uitgevoerd met vergelijkingsoperatoren. Laten we het voorbeeld van boksen met vergelijkingsoperator bekijken:
 class UnboxingExample2{ public static void main(String args[]){ Integer i=new Integer(50); if(i<100){ unboxing internally system.out.println(i); } < pre> <span> Test it Now </span> <pre> Output:50 </pre> <hr> <h3>Autoboxing and Unboxing with method overloading</h3> <table class="table"> <tr><td>In method overloading, boxing and unboxing can be performed. There are some rules for method overloading with boxing: <ul> <tr><td>Widening beats boxing</td>  </tr><tr><td>Widening beats varargs</td>  </tr><tr><td>Boxing beats varargs</td>  </tr></ul> </td></tr> </table> <h3>1) Example of Autoboxing where widening beats boxing</h3> <table class="table"> <tr><td>If there is possibility of widening and boxing, widening beats boxing.</td></tr> </table> <pre> class Boxing1{ static void m(int i){System.out.println(&apos;int&apos;);} static void m(Integer i){System.out.println(&apos;Integer&apos;);} public static void main(String args[]){ short s=30; m(s); } } </pre> <span> Test it Now </span> <pre> Output:int </pre> <hr> <h3>2) Example of Autoboxing where widening beats varargs</h3> <table class="table"> <tr><td>If there is possibility of widening and varargs, widening beats var-args.</td></tr> </table> <pre> class Boxing2{ static void m(int i, int i2){System.out.println(&apos;int int&apos;);} static void m(Integer... i){System.out.println(&apos;Integer...&apos;);} public static void main(String args[]){ short s1=30,s2=40; m(s1,s2); } } </pre> <span> Test it Now </span> <pre> Output:int int </pre> <hr> <h3>3) Example of Autoboxing where boxing beats varargs</h3> <table class="table"> <tr><td>Let&apos;s see the program where boxing beats variable argument:</td></tr> </table> <pre> class Boxing3{ static void m(Integer i){System.out.println(&apos;Integer&apos;);} static void m(Integer... i){System.out.println(&apos;Integer...&apos;);} public static void main(String args[]){ int a=30; m(a); } } </pre> <span> Test it Now </span> <pre> Output:Integer </pre> <hr> <h3>Method overloading with Widening and Boxing</h3> <table class="table"> <tr><td>Widening and Boxing can&apos;t be performed as given below:</td></tr> </table> <pre> class Boxing4{ static void m(Long l){System.out.println(&apos;Long&apos;);} public static void main(String args[]){ int a=30; m(a); } } </pre> <span> Test it Now </span> <pre> Output:Compile Time Error </pre></100){>

Autoboxing en Unboxing met overbelasting van de methoden

Bij de methode van overbelasting kunnen boksen en uitpakken worden uitgevoerd. Er zijn enkele regels voor overbelasting van methoden bij boksen:
Verbreding beats boksen
Verbreding verslaat varargs
Boksen verslaat varargs

1) Voorbeeld van autoboksen waarbij verbreding beter is dan boksen

Als er mogelijkheid is tot verbreding en boksen, dan is verbreding beter dan boksen.
 class Boxing1{ static void m(int i){System.out.println(&apos;int&apos;);} static void m(Integer i){System.out.println(&apos;Integer&apos;);} public static void main(String args[]){ short s=30; m(s); } } 
Test het nu
 Output:int 

2) Voorbeeld van Autoboxing waarbij verbredende beats varargs zijn

Als er een mogelijkheid is tot verbreding en varargs, dan verslaat verbreding var-args.
 class Boxing2{ static void m(int i, int i2){System.out.println(&apos;int int&apos;);} static void m(Integer... i){System.out.println(&apos;Integer...&apos;);} public static void main(String args[]){ short s1=30,s2=40; m(s1,s2); } } 
Test het nu
 Output:int int 

3) Voorbeeld van autoboksen waarbij boksen de varargs verslaat

Laten we eens kijken naar het programma waarin boksen het variabele argument verslaat:
 class Boxing3{ static void m(Integer i){System.out.println(&apos;Integer&apos;);} static void m(Integer... i){System.out.println(&apos;Integer...&apos;);} public static void main(String args[]){ int a=30; m(a); } } 
Test het nu
 Output:Integer 

Methode van overbelasting met verbreding en boksen

Verbreden en boksen kunnen niet worden uitgevoerd zoals hieronder aangegeven:
 class Boxing4{ static void m(Long l){System.out.println(&apos;Long&apos;);} public static void main(String args[]){ int a=30; m(a); } } 
Test het nu
 Output:Compile Time Error