2-modul · 6-dars: Wrapper · Big Numbers · Boxing · Inner class
Daraja: O'rta
Wrapper · Big Numbers · Boxing · Inner class. OOP bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Wrapper · Big Numbers · Boxing · Inner class tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Primitive turlarni obyekt ko'rinishida o'raydigan class lar (masalan `int` → `Integer`).
Collection lar obyekt talab qiladi; null qiymat kerak bo'lganda; utility methodlar (`parseInt`, `MAX_VALUE`) uchun.
## Intervyuga tayyorgarlik ### Wrapper Classlar nima? Primitive turlarni obyekt ko'rinishida o'raydigan class lar (masalan `int` → `Integer`).
### Wrapper Classlar nimaga kerak? Collection lar obyekt talab qiladi; null qiymat kerak bo'lganda; utility methodlar (`parseInt`, `MAX_VALUE`) uchun.
### Qanday Wrapper Classlar mavjud? `Byte`, `Short`, `Integer`, `Long`, `Float`, `Double`, `Character`, `Boolean`.
### Wrapper Classlar qanday classlar? Immutable va `final` class lar; ko'pchiligi `Number` class dan meros oladi.
### Number Class-ning subclasslari qaysilar? `Byte`, `Short`, `Integer`, `Long`, `Float`, `Double` (va `BigInteger`, `BigDecimal`).
### Character Class qaysi interfacelardan voris olgan? `Serializable` va `Comparable<Character>`.
### BigNumbers-ning qanday turlari bor? `BigInteger` va `BigDecimal`.
### BigDecimal Class nima? Katta va aniq o'nlik (decimal) sonlar bilan aniqlik yo'qotmasdan ishlash uchun class — ayniqsa pul hisob-kitoblarida.
### BigInteger Class nima? Cheksiz kattalikdagi butun sonlar bilan ishlash uchun class.
### Arifmetik amallarni (+,-,/,*) bu classlar bilan ishlata olamizmi? To'g'ridan-to'g'ri yo'q. `add()`, `subtract()`, `multiply()`, `divide()` methodlari orqali bajariladi.
### AutoBoxing va Boxing nima uchun kerak? Primitive va wrapper o'rtasida qulay va avtomatik o'tkazish uchun.
### Autoboxing nima? Primitive-ni wrapper-ga avtomatik o'girish: `Integer i = 5;`.
### Unboxing nima? Wrapper-ni primitive-ga avtomatik o'girish: `int x = i;`.
### Narrowing va Widening nima? Widening — kichik turdan katta turga avtomatik o'tish (`int` → `long`). Narrowing — katta turdan kichikka, aniq cast talab qiladi (`double` → `int`).
### Inner Class nima? Boshqa class ichida e'lon qilingan class.
### Inner Classlarning foydali tomonlari? Mantiqiy guruhlash, tashqi class a'zolariga kirish, kuchliroq inkapsulyatsiya va o'qishga qulaylik.
### Inner Class-ning qanaqa turlari bor? Member (non-static) inner, Static nested, Local va Anonymous class.
### Static Inner Class Outer Class-ning non-static fieldlariga murojaat qiloladimi? Yo'q. Static nested class outer-ning instance (non-static) a'zolariga bevosita kira olmaydi.
### Local inner class-larni access modifierlar bilan e'lon qilib bo'ladimi? Yo'q. Local class ga access modifier qo'yilmaydi (u faqat method ichida yashaydi).
## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/2-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/classes-objects/) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
var price = new java.math.BigDecimal("0.10");
var total = price.add(new java.math.BigDecimal("0.20"));
System.out.println(total); // 0.30
Integer nullable = null;
// int n = nullable; // Unboxing NullPointerException beradi.
Keng tarqalgan xatolar
- `Integer` ni `==` bilan solishtirish: kesh chegarasidan (-128..127) tashqarida natija `false` bo'ladi.
- Pul yoki aniq hisob uchun `double` ishlatish - `BigDecimal` kerak.
Mashqlar
- `Integer a = 127, b = 127;` va `Integer c = 128, d = 128;` uchun `==` natijasini tekshiring.
- `0.1 + 0.2` ni `double` va `BigDecimal` bilan hisoblab, natijalarni solishtiring.
Teglar: pdp, modul-02, nazariya