logo

אוטומאוקס ו-Unboxing:

ההמרה האוטומטית של סוגי נתונים פרימיטיביים לסוג ה-Wrapper המקביל לו ידועה כ-boxing ופעולה הפוכה ידועה בשם unboxing. זוהי התכונה החדשה של Java5. אז מתכנת Java לא צריך לכתוב את קוד ההמרה.

היתרון של אוטו-בוקסינג ו-Unboxing:

אין צורך בהמרה בין פרימיטיבים ל-Wrappers באופן ידני ולכן נדרש פחות קידוד.

דוגמה פשוטה ל-Autoboxing ב-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); } } 
בדוק את זה עכשיו
 Output:50 5 
הורד את הדוגמה הזו

דוגמה פשוטה של ​​Unboxing ב-Java:

ההמרה האוטומטית של סוג מחלקת עטיפה לסוג פרימיטיבי מתאים, ידועה בשם Unboxing. בואו נראה את הדוגמה של unboxing:

 class UnboxingExample1{ public static void main(String args[]){ Integer i=new Integer(50); int a=i; System.out.println(a); } } 
בדוק את זה עכשיו

תְפוּקָה:

 50 

Autoboxing ו- Unboxing עם מפעילי השוואה

ניתן לבצע אוטובוקס עם מפעילי השוואה. בואו נראה את הדוגמה של איגרוף עם אופרטור השוואה:
 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 ו-Unboxing עם עומס יתר בשיטה

בעומס יתר בשיטה ניתן לבצע איגרוף ו-unboxing. ישנם כמה כללים להעמסת יתר של שיטות באגרוף:
הרחבה מנצחת אגרוף
הרחבה מנצחת וארגס
איגרוף מנצח את וארגס

1) דוגמה ל-Autoboxing שבו הרחבה מנצחת את האגרוף

אם יש אפשרות של הרחבה ואיגרוף, הרחבה דופקת איגרוף.
 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); } } 
בדוק את זה עכשיו
 Output:int 

2) דוגמה ל-Autoboxing שבו הרחבה מנצחת את Varargs

אם יש אפשרות של הרחבה ו-varargs, הרחבה דופקת 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); } } 
בדוק את זה עכשיו
 Output:int int 

3) דוגמה ל-Autoboxing שבו האגרוף מנצח את וארגס

בוא נראה את התוכנית שבה איגרוף מנצח ארגומנט משתנה:
 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); } } 
בדוק את זה עכשיו
 Output:Integer 

עומס יתר בשיטה עם הרחבה ואיגרוף

לא ניתן לבצע הרחבה ואיגרוף כפי שמופיע להלן:
 class Boxing4{ static void m(Long l){System.out.println(&apos;Long&apos;);} public static void main(String args[]){ int a=30; m(a); } } 
בדוק את זה עכשיו
 Output:Compile Time Error