logo

Autobox un Unboxing:

Primitīvo datu tipu automātiska pārveidošana līdzvērtīgā iesaiņojuma veidā ir pazīstama kā boksēšana, un pretējā darbība ir pazīstama kā atpakošana. Šī ir jaunā Java5 funkcija. Tātad java programmētājam nav jāraksta konvertēšanas kods.

Autoboxing un Unboxing priekšrocības:

Nav nepieciešams manuāli pārveidot primitīvus un iesaiņojumus, tāpēc ir nepieciešams mazāk kodēšanas.

Vienkāršs Autoboxing piemērs 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); } } 
Izmēģiniet to tūlīt
 Output:50 5 
lejupielādējiet šo piemēru

Vienkāršs java izpakošanas piemērs:

Iesaiņojuma klases tipa automātiska pārveidošana atbilstošā primitīvā veidā ir pazīstama kā izsaiņošana. Apskatīsim izpakošanas piemēru:

 class UnboxingExample1{ public static void main(String args[]){ Integer i=new Integer(50); int a=i; System.out.println(a); } } 
Izmēģiniet to tūlīt

Izvade:

 50 

Autoboxing un Unboxing ar salīdzināšanas operatoriem

Autoboksu var veikt ar salīdzināšanas operatoriem. Apskatīsim boksa piemēru ar salīdzināšanas operatoru:
 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 un Unboxing ar metodes pārslodzi

Metodes pārslodzēšanā var veikt boksu un atpakošanu. Ir daži noteikumi metožu pārslogošanai ar boksu:
Paplašināšanās pārspēj boksu
Paplašinot pārspēj varargs
Bokss pārspēj varargs

1) Autoboksa piemērs, kur paplašināšana pārspēj boksu

Ja ir iespēja paplašināties un boksēties, paplašināšana pārspēj boksu.
 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); } } 
Izmēģiniet to tūlīt
 Output:int 

2) Autoboksa piemērs, kur paplašināšanās pārspēj varargus

Ja ir iespēja paplašināties un varargs, paplašinot pārspēj var-argu.
 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); } } 
Izmēģiniet to tūlīt
 Output:int int 

3) Autoboksa piemērs, kur bokss pārspēj varargus

Apskatīsim programmu, kurā bokss pārspēj mainīgo argumentu:
 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); } } 
Izmēģiniet to tūlīt
 Output:Integer 

Metodes pārslodze ar paplašināšanu un boksu

Paplašināšanu un boksu nevar veikt, kā norādīts tālāk:
 class Boxing4{ static void m(Long l){System.out.println(&apos;Long&apos;);} public static void main(String args[]){ int a=30; m(a); } } 
Izmēģiniet to tūlīt
 Output:Compile Time Error