Modul 2 Lesson 6
Asrorbek✅ Wrapper Classlar nima?
Wrapper Class — bu primitive data typelarni (int, boolean, char,...) obyekt sifatida ifodalash imkonini beruvchi classlar.
Ya’ni int — bu primitive type, Integer esa uning wrapper classi hisoblanadi.

🔧 Wrapper Classlar nimaga kerak?
- Primitive types obyekt sifatida kerak bo‘lganda (masalan,
ArrayList,HashMapfaqat obyektlarni saqlaydi). - Java Collection Framework’da ishlash uchun.
- Autoboxing / Unboxing funksiyalaridan foydalanish uchun.
- null qiymatlarni saqlash yoki obyekt bilan ishlash kerak bo‘lganda.
- Method parametrlari sifatida primitive emas, obyekt uzatish uchun.
📋 Qanday Wrapper Classlar mavjud?
Java’da har bir primitive tur uchun bitta wrapper class mavjud:

🧱 Wrapper Classlar qanday classlar?
- Barcha wrapper classlar final va immutable (ya’ni o‘zgartirib bo‘lmaydi).
Numberclassidan voris bo‘lgan (Byte,Short,Integer,Long,Float,Double).CharactervaBooleanesaNumberdan emas, boshqa classlardan voris olgan.- Wrapper classlar boxing/unboxing, parsing, comparison kabi ko‘p foydali methodlarga ega.
🔢 Number Classning subclasslari:
Number — bu abstract class bo‘lib, quyidagi subclasslarga ega:
ByteShortIntegerLongFloatDouble
Ular intValue(), doubleValue(), longValue() kabi methodlarni taqdim etadi.
🔠 Character Classning qaysi interfacelardan voris olgan?
Character class quyidagi interfacedan voris olgan:
Comparable<Character>
Bu orqali compareTo() methodi orqali belgilarni solishtirish mumkin.

🔢 BigNumbers ning qanday turlari bor?
Java’da juda katta sonlar bilan ishlash uchun ikki asosiy class mavjud:
- BigInteger – butun sonlar (
int,longosha bo‘lgan sonlar uchun) - BigDecimal – o‘nlik sonlar (aniqlik muhim bo‘lgan joylarda, masalan, pul hisob-kitoblarda)
Ikkalasi ham java.math package ichida joylashgan.
💡 What is BigDecimal Class?
BigDecimal – bu o‘nlik sonlar bilan aniqlikni yo‘qotmasdan ishlash imkonini beruvchi class.
Masalan: new BigDecimal("10.34567890123456789")
Foydalanish joylari:
- Pul hisob-kitoblari
- Ilmiy hisoblashlar
- Aniqlik juda muhim bo‘lgan joylarda (masalan, bank, moliya)
💡 What is BigInteger Class?
BigInteger – bu juda katta butun sonlar bilan ishlash uchun mo‘ljallangan class.
Masalan:
new BigInteger("99999999999999999999999999999")
Foydalanish joylari:
- Shifrlash algoritmlari (masalan, RSA)
- Hash hisoblash
- Juda katta butun sonlar bilan matematik operatsiyalar
➕➖ Arefmetik amallarni bu classlar bilan ishlata olamizmi?
Ha, lekin odatdagi +, -, *, / operatorlari ishlamaydi, o‘rniga methodlar ishlatiladi:

BigDecimal a = new BigDecimal("10");
BigDecimal b = new BigDecimal("3");
BigDecimal result = a.divide(b, 2, RoundingMode.HALF_UP); // natija: 3.33
✅ Autoboxing nima?
Autoboxing – bu primitive type ni wrapper class ga Java tomonidan avtomatik tarzda o‘girish.
int a = 10; Integer b = a; // autoboxing
Java bu yerda avtomatik Integer.valueOf(a) chaqiradi.
✅ Unboxing nima?
Unboxing – bu wrapper class ob'ektini primitive type ga o‘girish.
Integer a = 20; int b = a; // unboxing
Java bu yerda avtomatik a.intValue() chaqiradi.
🤔 Nima uchun kerak?
Collections(List, Map, Set) faqat obyektlar bilan ishlaydi, primitivlar emas.- Shuning uchun
into‘rnigaIntegerkerak bo‘ladi. - Java 5 dan boshlab autoboxing/unboxing avtomatik ishlaydi, bu kodni soddalashtiradi.
🔄 Widening va Narrowing nima?
✅ Widening (kengaytirish):
Kichik hajmdagi primitive type’ni kattasiga avtomatik o‘girish. Safe (xavfsiz).
int a = 10; long b = a; // widening (automatik)
⚠️ Narrowing (toraytirish):
Katta turdagi qiymatni kichik primitive type’ga qo‘lda o‘girish. Riskli, data loss bo‘lishi mumkin.
long a = 100000L; int b = (int) a; // narrowing (qo‘lda cast qilish kerak)
✅ Inner Class nima?
Inner class — bu boshqa class (ya’ni Outer class) ichida e’lon qilingan class. U tashqi classning metodlari, maydonlari bilan bevosita ishlay oladi (contextga qarab).
✅ Inner Classlarning foydali tomonlari:
- Encapsulation (ma’lumotni yashirish) ni yaxshilaydi.
- Kodni tartibli va bir joyga jamlashga yordam beradi.
- Outer class’ning private elementlariga to‘g‘ridan-to‘g‘ri kira oladi.
- Callback mechanism yoki event handling uchun qulay.
✅ Inner Classning turlari:
Java’da 4 ta asosiy inner class mavjud:
- Non-static Inner class (Instance inner class)
- Static Nested class (Static inner class)
- Local Inner class — method yoki block ichida e’lon qilinadi
- Anonymous Inner class — nomi bo‘lmagan class, odatda bir martalik foydalanish uchun
❓ Static Inner Class, Outer Classning non-static fieldlariga murojat qiloladimi?
Yo‘q, qilolmaydi.
Static inner class — bustatickontekstda yashaydi. U outer classning non-static (ya’ni instance) maydonlariga bevosita kira olmaydi. Faqatnew Outer().nonStaticFieldko‘rinishida kirish mumkin.
❓ Local Inner Class’larni access modifierlar bilan e’lon qilib bo‘ladimi?
Yo‘q, bo‘lmaydi.
Local inner class — bu metod, konstruktor yoki blok ichida e’lon qilinadi. Uprivate,public,protectedyokistatickabi access modifierlar bilan e’lon qilib bo‘lmaydi.