מה זה AutoBoxing ו unboxing בג'אווה?



מאמר זה ייתן לך גישה מקיפה כלפי רישום אוטומטי ב- Java יחד עם כמה דוגמאות להבנה טובה יותר.

לרוב אנו משתמשים בסוגי נתונים פרימיטיביים בזמן כתיבת תוכנית בכל שפה שהיא. אך ישנם מצבים בהם סוגי נתונים פרימיטיביים נופלים בתחום ו הוא אחד מהם. כדי להתגבר על החסרונות בסוגי נתונים פרימיטיביים, אנו משתמשים עטיפות . הליך זה נקרא Autoboxing. נדון בתיבות אוטומטיות מפורטות בג'אווה דרך השקע הבא:

בואו נתחיל.





מה זה אגרוף ותיבה אוטומטית בג'אווה?

אגרוף ותיבה אוטומטית משמשים לעתים קרובות לאותו מושג. אבל במציאות, הם לא בדיוק אותו הדבר. בואו נדבר תחילה על מושג האיגרוף. מה זה אגרוף? נשמע שאנחנו שומרים משהו בתוך קופסה, נכון? כן, כשאנחנו אומרים שאנחנו מתאגרפים או עוטפים סוג נתונים פרימיטיבי זה אומר שאנחנו עוטפים אותו כדי ליצור אובייקט. עדיין מבולבל? בואו ניקח דוגמא.

int FirstNumber = 1

המשתנה 'FirstNumber' הוא מסוג int שהוא a . עכשיו, מה אם אני רוצה להמיר את המשתנה 'FirstNumber' לאובייקט? ג'אווה מספקת דרך לעשות זאת.



מספר שלם שני מספר מספר שלם חדש (2)

שימו לב כי 'SecondNumber' אינו מסוג int אך הוא אובייקט מסוג Integer. תהליך זה של המרת סוגי נתונים פרימיטיביים לאובייקט נקרא אגרוף. אולי תשאלו איך זה אפשרי? בואו נחשוב מהי הדרך הפשוטה ביותר לבצע משימה זו. אנחנו יכולים ליצור מעמד המכיל תכונה יחידה מסוג int, קונסטרוקטור שלוקח ערך int int ומקצה אותו לתכונה class שלנו, וכמה שיטות לתפעל ערך int זה. למידע נוסף אודותיו, עיין בזה מסמך .

ראינו כיצד ניתן להמיר סוג int ל- Java. האם יש דרך להמיר סוגי נתונים פרימיטיביים אחרים לאובייקטים? כן, ל- Java יש התאמה כיתת עטיפה עבור סוגי נתונים פרימיטיביים שונים. נבדוק אותם בחלק הבא של פוסט זה.

רישום אוטומטי

בשלב זה אנו יודעים מה זה אגרוף. עכשיו בואו נבין מהי תיבת אוטומטית. כאשר תהליך האיגרוף מתבצע על ידי המהדר ללא אזכור מפורש, נקרא תיבת אגרוף אוטומטית.



בואו נבין זאת בדוגמה:

ייבא java.util.ArrayList ייבא java.util.Listclass Box {ציבורי ריק ריק סטריטי (String [] args) {List Mylist = ArrayList new () for (int i = 0 i<10 i++) Mylist.add(i) } }

כפי שדנו קודם מקבל רק אובייקטים וסוג נתונים פרימיטיבי אינם עובדים. בתוכנית שלעיל לא המירו את סוגנו לאובייקטים מסוג שלם שעדיין התוכנית מבצעת ללא כל שגיאה. אֵיך? התשובה לשאלה זו היא שהמהדר ביצע באופן אוטומטי את תהליך האיגרוף לפני שהוסיף את הערך ל- 'Mylist' ומכאן השם Autoboxing.

Mylist.add (Integer.valueOf (i))

שורת הקוד שלעיל מתווספת על ידי המהדר בתוכנית שלנו.

הערה- בשורה שלמעלה שם המחלקה הקוד 'שלם' מוזכר לפני ערך השיטהOf () שכן valueOf () היא שיטה סטטית. לקבלת דוגמאות נוספות עיין ב מסמכים .

Unboxing ו- Autounboxing

ראינו איך מסוג הנתונים הפרימיטיבי מומרים לאובייקטים. אבל זה רק חצי מהסיפור. המחצית השנייה של הסיפור היא המרת אובייקט של סוג עטיפת סוג לסוג הנתונים הפרימיטיבי שלו ביטול איגרוף .

כיצד לאתחל אובייקט בפייתון

לדוגמה-

מספר שלם מספר ראשון = מספר שלם חדש (1) int SecondNumber = FirstNumber.intValue () System.out.println (SecondNumber)

פלט- 1

כניסה אוטומטית- כאשר תהליך ביטול האיגרוף על ידי המהדר ללא אזכור מפורש נקרא אוטונבוקסינג.

הצהרה אם בשאילתת SQL

לדוגמה-

מספר שלם = מספר שלם חדש (20) int מספר = מספר

הקוד שלעיל הוא דוגמה לאחסון אוטומטי. בחלק הבא נלמד על שיעורי עטיפה.

שיעורי עטיפה

המירו באובייקט מסוג intl משתנה מסוג intl. מחלקה שלמה זו היא מחלקת עטיפה. בג'אווה, מחלקת עטיפה זמינה לכל אחד . שיעורי עטיפה אלה עוזרים לנו להמיר משתנה מסוג פרימיטיבי לאובייקט מסוג מחלקת עטיפה בהתאמה. השיטות של שיעורי עטיפה שימושיות בתמרון הערכים.

הטבלה שלהלן מספרת לנו על סוג הנתונים הפרימיטיבי ומחלקת העטיפה שלו.

סוג פרימיטיבי כיתת עטיפה

בוליאני

בוליאני

ביי

בייט

לְהַשְׁחִיר

אופי

לָצוּף

לָצוּף

int

מספר שלם

ארוך

ארוך

ansible לעומת בובה לעומת שף

קצר

קצר

לְהַכפִּיל

לְהַכפִּיל

שימו לב לאותיות רישיות בשיעורי העטיפה.

לפיכך הגענו לסוף מאמר זה בנושא 'תיבה אוטומטית בג'אווה'. אם ברצונך ללמוד עוד, עיין ב מאת אדוריקה, חברת למידה מקוונת אמינה. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה נועד להכשיר אותך לקונספטים מרכזיים של Java וגם עם מסגרות Java שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור התגובות בבלוג זה 'תיבת אוטומטית בתיבת ג'אווה' ונחזור אליך בהקדם האפשרי.