Sobes.tech
Junior

Java'da qopqog'chi sinflar (Wrapper sinflar) nima?

sobes.tech AI

AIdan javob

Java'da Wrapper sinflari, primitiv turlarining ob'ektga yo'naltirilgan ta'rifini ta'minlaydigan sinflardir. Ular kolleksiyalar yoki ko'p ipli ishlashda ob'ektlar talab qilinadigan kontekstlarda primitiv qiymatlarni ishlatishga imkon beradi.

Asosiy Wrapper sinflar:

  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Boolean
  • Character

Foydalanish misollari:

Primitiv turlarni ishlatish:

// Primitiv tur
int x = 10;

Wrapper sinfidan foydalanish:

// Wrapper sinf
Integer y = new Integer(20); // Eskirgan usul
Integer z = 30; // Autoboxing (primitivni avtomatik ob'ektga aylantirish)

Primitivlar va Wrapper ob'ektlar o'rtasida konvertatsiya:

  • Autoboxing: Primitivni avtomatik ravishda Wrapper ob'ektiga aylantirish.
    // Autoboxing
    int primitiveInt = 100;
    Integer wrapperInt = primitiveInt;
    
  • Unboxing: Wrapper ob'ektni avtomatik ravishda primitivga aylantirish.
    // Unboxing
    Integer wrapperInteger = new Integer(200);
    int primitiveInteger = wrapperInteger;
    

Wrapper sinflarining afzalliklari:

  • Kolleksiyalar bilan ishlash: (List, Set, Map) faqat ob'ektlarni saqlaydi.

  • null bilan ishlash: Wrapper ob'ektlar null qiymatga ega bo'lishi mumkin, primitivlarga qaraganda.

  • Foydali metodlar taqdim etadi: Wrapper sinflar stringlarni o'zgartirish, qiymatlarni solishtirish va h.k. uchun metodlarga ega. Masalan, Integer.parseInt(String s).

  • Generiklar bilan ishlash: Generiklar faqat ob'ektlar bilan ishlaydi. Wrapper sinflarining kamchiliklari:

  • Xotira iste'moli: Wrapper ob'ektlar primitivlardan ko'ra ko'proq xotira talab qiladi.

  • Ishlash tezligi pasayishi: Avtomatik konvertatsiya (autoboxing va unboxing) ishlash tezligini biroz pasaytirishi mumkin. Misol uchun kolleksiyada:

import java.util.ArrayList;
import java.util.List;

public class WrapperExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(10); // Autoboxing
        numbers.add(new Integer(20)); // Ob'ektni aniq yaratish

        int firstNum = numbers.get(0); // Unboxing
        System.out.println(firstNum);
    }
}