logo

Autoboxing și Unboxing:

Conversia automată a tipurilor de date primitive în tipul său Wrapper echivalent este cunoscută sub numele de boxing, iar operația opusă este cunoscută sub denumirea de unboxing. Aceasta este noua caracteristică a Java5. Deci, programatorul java nu trebuie să scrie codul de conversie.

Avantajul Autoboxing și Unboxing:

Nu este nevoie de conversie între primitive și Wrapper-uri manual, așa că este necesară mai puțină codare.

Exemplu simplu de autoboxing în 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); } } 
Testează-l acum
 Output:50 5 
descărcați acest exemplu

Exemplu simplu de unboxing în java:

Conversia automată a tipului de clasă wrapper în tipul primitiv corespunzător este cunoscută sub numele de Unboxing. Să vedem exemplul de unboxing:

 class UnboxingExample1{ public static void main(String args[]){ Integer i=new Integer(50); int a=i; System.out.println(a); } } 
Testează-l acum

Ieșire:

 50 

Autoboxing și Unboxing cu operatori de comparație

Autoboxing-ul poate fi efectuat cu operatori de comparație. Să vedem exemplul de box cu operator de comparație:
 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 și Unboxing cu supraîncărcare de metodă

În supraîncărcarea metodei, se pot efectua box și unboxing. Există câteva reguli pentru supraîncărcarea metodelor cu box:
Lărgirea bate boxul
Lărgirea bătăilor varargs
Boxul îi bate pe varargs

1) Exemplu de Autoboxing în care lărgirea bate boxul

Dacă există posibilitatea de lărgire și box, lărgirea bate boxul.
 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); } } 
Testează-l acum
 Output:int 

2) Exemplu de Autoboxing unde lărgirea bate varargs

Dacă există posibilitatea de lărgire și varargs, lărgirea bate 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); } } 
Testează-l acum
 Output:int int 

3) Exemplu de Autoboxing în care boxul îi bate pe varargs

Să vedem programul în care boxul bate argumentul variabil:
 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); } } 
Testează-l acum
 Output:Integer 

Supraîncărcarea metodei cu Widening și Boxing

Lărgirea și boxul nu pot fi efectuate așa cum se arată mai jos:
 class Boxing4{ static void m(Long l){System.out.println(&apos;Long&apos;);} public static void main(String args[]){ int a=30; m(a); } } 
Testează-l acum
 Output:Compile Time Error