1. Massivlar xotirada
Oldingi misollardagi rasmlar biroz noaniq edi.
Massivlar yaratishda (xuddi stringlarni yaratishda bo'lgani kabi) xotirada ikkita bo'lak ajratiladi: biri massiv (konteyner) uchun va ikkinchisi esa u saqlagan manzil uchun. Berikut so'nggi holat quyidagi rasmda tasvirlangan:

Yashil rangda 10 ta int elementdan iborat massiv va int[] tipidagi o'zgaruvchi turibdi, u massivning manzilini xotirada saqlaydi.
Solishtirish uchun ko'k rangda int turidagi oddiy o'zgaruvchi ko'rsatilgan, u 199 qiymatini saqlaydi.
Stringlarning xotirada saqlanishiga o'xshab ketmayaptimi?
To'g'ri, stringlar. Va stringlar bilan ishlashda bo'lgani kabi, "massiv tipidagi o'zgaruvchilarni" bir-biriga moslashtirish mumkin:
| Kod | Tushuntirish |
|---|---|
|
|
Obyekt-massiv o'z o'rnida qoladi, o'zgaruvchilar a va b bir xil manzillarni (havolalarni) saqlashadi. Rasmga qarang:
2. Massiv bilan ishlashning batafsil xilasi
Massivni istalgan turdan yaratish mumkin. Buning uchun faqat tur nomidan keyin kvadrat qavslarni yozish kerak. Massiv yaratishning umumiy ko'rinishi:
tur[] nom = new tur[soni];
Bu yerda tur — massivda saqlamoqchi bo'lgan elementlarning (hujayralarning) turi. Nom — massivga murojaat qiladigan o'zgaruvchi nomi, soni esa massivda qancha hujayra borligini belgilaydi.
Yuqoridagi misolda kanonik shakl ko'rsatilgan: massiv o'zgaruvchisini yaratib, massiv obyektini yaratish. Bu aslida ikkita mustaqil tuzilish.
O'zgaruvchi-massiv va obyekt-massivni alohida yaratish mumkin:
tur[] nom;
nom = new tur[soni];
Va yana bir muhim jihat:
Misollar:
| Kod | Tushuntirish |
|---|---|
|
n elementdan iborat massiv yaratish |
|
203 elementdan iborat massiv yaratish |
|
|
0..99 dan boshqa butun sonlar), dastur
ArrayIndexOutOfBoundsException xatoligi bilan to'xtaydi — indeks massiv chegaralaridan tashqarida.
3. Massiv uzunligi
Oldingi misolda ko'rganingizdek, massiv tipidagi o'zgaruvchi alohida yaratilishi va keyinchalik biror joyda unga qiymat (massiv obyektiga havola) belgilanadi. Hatto shunday qilish mumkin:
| Kod | Tushuntirish |
|---|---|
|
int[] turidagi massiv o'zgaruvchi yaratishAgar a o'zgaruvchi 10 dan kichik bo'lsa,10 elementdan iborat massiv yaratish. Aks holda, 20 elementdan iborat massiv yaratish |
Va bunday massivda qanday ishlash kerak? Unda qancha element borligini qanday bilish mumkin?
Buning uchun massivda length deb nomlangan maxsus xususiyat (o'zgaruvchi) mavjud. Massiv uzunligini aniqlash uchun quyidagi ifodani ishlatishingiz mumkin:
array.length;
Bu yerda array — massiv o'zgaruvchining nomi, length esa massiv obyektining xususiyat nomi. length xususiyatidagi qiymatni o'zgartirish mumkin emas: length xususiyatni boshqa o'zgaruvchilarga belgilash mumkin, lekin bunga hech narsa belgilab bo'lmaydi (dastur oddiygina kompilyatsiya qilinmaydi).
Avvalgi misolni shunday davom ettirish mumkin:
| Kod | Tushuntirish |
|---|---|
|
int[] turidagi massiv o'zgaruvchini yaratamiz.Agar a o'zgaruvchi 10 dan kichik bo'lsa,10 elementdan iborat massiv yaratamiz.Aks holda, 20 elementdan iborat massiv yaratamiz.Massivning barcha elementlari bo'ylab tsikl: 0 dan boshlab va array.length — 1 gacha |
4. Java'da massivlar haqida faktlarni yangilash
Keling, massivlar haqida ma'lum faktlarni yakunlaymiz:
Fakt 1. Massiv ko'p hujayralardan iborat.
Fakt 2. Aniq hujayraga kirish uning raqamini ko'rsatish orqali amalga oshiriladi.
Fakt 3. Barcha hujayralar bir xil turga ega.
Fakt 4. Barcha hujayralar uchun boshlang'ich qiymat — 0 va null (agar hujayrada manzil saqlansa), false (boolean turi uchun). Default qiymatlar haqida ko'proq ma'lumotni bu darsda olasiz.
Fakt 5. String[] list – bu shunchaki o'zgaruvchi e'lon qilish: konteynerning o'zi (massiv-obyekt) hali yaratilmagan. U bilan ishlash uchun massivni (konteynerni) yaratish va uni ushbu o'zgaruvchiga joylashtirish kerak, so'ng undan foydalanish mumkin. Quyidagi misolni ko'ring.
Fakt 6. Obyekt-massivni (konteynerni) yaratishda uning uzunligini – unda qancha hujayra borligini ko'rsatish kerak. Bu new TypeName[n]; shaklidagi buyruq yordamida amalga oshiriladi.
Fakt 7. Massivning uzunligini .length xususiyat orqali aniqlash mumkin.
Fakt 8. Massiv yaratgandan so'ng uning elementlarining turini yoki sonini o'zgartirish mumkin emas.
| Kod | Tushuntirish |
|---|---|
|
s null ga tenglist null ga teng |
|
list o'zgaruvchisi 10 elementli string massiv obyektiga havolani saqlaydi.n 10 ga teng |
|
Endi |
|
Dasturda xato (xato xabar) — dastur to'xtaydi. list bo'sh havolani saqlaydi — null |
|
Dasturda xato (xato xabar) — massiv chegaralaridan tashqariga chiqish. Agar list 10 element/hujayrani o'z ichiga olsa, ruxsat etilgan indekslar: 0 1 2 3 4 5 6 7 8 9 — jami 10 ta. |
GO TO FULL VERSION