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('int');} static void m(Integer i){System.out.println('Integer');} 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('int int');} static void m(Integer... i){System.out.println('Integer...');} 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's see the program where boxing beats variable argument:</td></tr> </table> <pre> class Boxing3{ static void m(Integer i){System.out.println('Integer');} static void m(Integer... i){System.out.println('Integer...');} 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't be performed as given below:</td></tr> </table> <pre> class Boxing4{ static void m(Long l){System.out.println('Long');} 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: |
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('int');} static void m(Integer i){System.out.println('Integer');} 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('int int');} static void m(Integer... i){System.out.println('Integer...');} 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('Integer');} static void m(Integer... i){System.out.println('Integer...');} 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('Long');} public static void main(String args[]){ int a=30; m(a); } }
Izmēģiniet to tūlīt Output:Compile Time Error
100){>