Modul 2 Lesson 6

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?

  1. Primitive types obyekt sifatida kerak bo‘lganda (masalan, ArrayList, HashMap faqat obyektlarni saqlaydi).
  2. Java Collection Framework’da ishlash uchun.
  3. Autoboxing / Unboxing funksiyalaridan foydalanish uchun.
  4. null qiymatlarni saqlash yoki obyekt bilan ishlash kerak bo‘lganda.
  5. 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).
  • Number classidan voris bo‘lgan (Byte, Short, Integer, Long, Float, Double).
  • Character va Boolean esa Numberdan 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:

  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double

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:

  1. BigInteger – butun sonlar (int, long osha bo‘lgan sonlar uchun)
  2. 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 int o‘rniga Integer kerak 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:

  1. Non-static Inner class (Instance inner class)
  2. Static Nested class (Static inner class)
  3. Local Inner class — method yoki block ichida e’lon qilinadi
  4. 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 — bu static kontekstda yashaydi. U outer classning non-static (ya’ni instance) maydonlariga bevosita kira olmaydi. Faqat new Outer().nonStaticField ko‘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. U private, public, protected yoki static kabi access modifierlar bilan e’lon qilib bo‘lmaydi.


Report Page