Sobes.tech
Intern

Oddiy va referensli ma'lumot turlari o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Asosiy turlar to'g'ridan-to'g'ri qiymatni saqlaydi, referens turlar esa ob'ektga (xotira manziliga) referens (yo'nalishni) saqlaydi.

Asosiy turlar:

  • Ular xotirada belgilangan va kichik hajmda bo'ladi.
  • Qiymat orqali uzatiladi (o'zi nusxa olinadi).
  • Kichik harf bilan boshlanadi.
  • Quyidagilarni o'z ichiga oladi: byte, short, int, long, float, double, boolean, char.
// Asosiy tur misoli
int a = 10;
int b = a; // 10 qiymati nusxa olindi
b = 20;   // faqat b o'zgaradi, a 10 qoladi

Referens turlar:

  • Ob'ektning mazmuniga qarab turli hajmda xotira oladi.
  • Referens (ob'ekt manzili) orqali uzatiladi. Ob'ekt ustida o'zgartirishlar, unga murojaat qilayotgan barcha o'zgaruvchilarga ta'sir qiladi.
  • Odatda katta harf bilan boshlanadi (sinflar).
  • Quyidagilarni o'z ichiga oladi: sinflar (String, Object, maxsus sinflar), interfeyslar, massivlar.
// Referens tur misoli
String str1 = new String("Hello");
String str2 = str1; // "Hello" ob'ektiga referens nusxa olindi
str2 = "World";   // str2 endi yangi "World" ob'ektiga murojaat qiladi. str1 esa hali "Hello" ga murojaat qiladi.

// O'zgartiriladigan ob'ekt bilan misol
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Bir xil ob'ektga referens nusxa olindi
list2.add(2); // Ob'ektga element qo'shildi, ikkala referens ham unga murojaat qiladi
// Endi list1 [1, 2] va list2 [1, 2] ni o'z ichiga oladi

Tez taqqoslash jadvali:

Xususiyat Asosiy turlar Referens turlar
Saqlash Qiymat Ob'ektga referens
Uzatish Qiymat orqali Referens orqali
Xotira hajmi Doimiy va kichik O'zgaruvchan
Boshlanishi Kichik harf bilan Ko'pincha katta harf bilan
Null bo'lishi null bo'lishi mumkin emas null bo'lishi mumkin

Asosiy turlar, ular wrapper sinflarga (masalan, int uchun Integer) o'raladi, shunda ular ob'ektlar bilan ishlash uchun imkon beradi.