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.