Ի՞նչ է ավտոբոքսինգի և անբոքսինգի գաղափարը Java-ում։
sobes.tech AI
Պատասխան AI-ից
Autoboxing և Unboxing-ը ավտոմատ փոխակերպումներ են primitivi տիպերի (օրինակ՝ int, char) և նրանց համապատասխան օբյեկտային դասերի (Integer, Character) միջև:
Autoboxing:
- տեղի է ունենում, երբ primitivi տիպը ավտոմատ կերպով փոխարկվում է համապատասխան օբյեկտային դասի օբյեկտի:
- թույլ է տալիս նշանակել primitivi արժեքներ օբյեկտային դասերի փոփոխականներին, փոխանցել primitivi արժեքներ մեթոդներին, որոնք սպասում են օբյեկտային դասերի, և ավելացնել primitivi արժեքներ հավաքածուներում, որոնք պահում են օբյեկտներ:
// Autoboxing
int primitiveInt = 10;
Integer wrapperInt = primitiveInt; // Primitivi int-ը ավտոմատ փոխարկվում է Integer
// Օգտագործում հավաքածուում
List<Integer> integerList = new ArrayList<>();
integerList.add(20); // Primitivi int 20-ը ավտոմատ փոխարկվում է Integer
Unboxing:
- տեղի է ունենում, երբ օբյեկտային դասի օբյեկտը ավտոմատ կերպով փոխարկվում է համապատասխան primitivi տիպի:
- թույլ է տալիս նշանակել օբյեկտներ օբյեկտային դասերի փոփոխականներին, փոխանցել օբյեկտներ primitivi արժեքներ սպասող մեթոդներին, և օգտագործել օբյեկտներ թվաբանական գործողություններում:
// Unboxing
Integer wrapperInt = 100;
int primitiveInt = wrapperInt; // Օբյեկտ Integer-ը ավտոմատ փոխարկվում է int
// Թվաբանական գործողությունում օգտագործում
Integer a = 5; // Autoboxing
Integer b = 3; // Autoboxing
int sum = a + b; // Unboxing a և b
Իդեա:
Autoboxing և Unboxing հիմնական գաղափարն է՝ կոդը պարզեցնել, դարձնել ավելի ընթեռնելի և նվազեցնել անհրաժեշտությունը բացահայտորեն ստեղծելու օբյեկտներ կամ ստանալու primitivi արժեքներ։ Սա թույլ է տալիս օգտագործել primitivi տիպերը այն կոնտեքստերում, որտեղ անհրաժեշտ են օբյեկտներ, առանց կոնստրուկտորների կամ intValue(), doubleValue() մեթոդների օգտագործման:
Маанիլու: Autoboxing և Unboxing-ը ավելացնում են լրացուցիչ օբյեկտներ և կարող են փոքր-ինչ ազդել արտադրողականության վրա, հատկապես ցիկլերում կամ ինտենսիվ օգտագործման ժամանակ: Նույնպես, null-արժեքները օբյեկտային կուտակներում Unboxing-ի ժամանակ կարող են հանգեցնել NullPointerException։