1. String tipidagi massiv
Mana, qisqacha String tipidagi massiv haqida gapirib o‘tsam.
Biz ilgari aytganimizdek, massiv har qanday turda bo'lishi mumkin. Demak, String turidagi massiv yaratishimiz mumkin. Klaviyaturadan 10ta qator yozib, ularni teskari tartibda ekranga chiqaradigan dastur qanday ko'rinishga ega bo'lishini quyida ko'rsataman:
|
Scanner obyektini yaratamiz10 elementli massiv obyektini yaratamiz 0 dan 9 gacha sikl Klaviaturadan qatordan o‘qiymiz va uni massivning navbatdagi hujayrasiga saqlaymiz 9 dan 0 gacha sikl Navbatdagi hujayrani ekranga chiqaramiz |
Kod deyarli o'zgarmadi! Faqat massiv yaratishda int turini String turiga almashtirishga majbur bo'ldik. Hamda, klaviaturadan qator o'qishda nextInt() metodini nextLine() metodi bilan almashtirish.
2. Pamyatda String turidagi massiv
Yana bir foydali fakt. 3ta rasmlarni ko'rib chiqaylik:
Rasm 1. String obyekti pamyatda qanday joylashgan:

Bu rasm oldingi leksiyalardan olingan.
Diqqat qiling, qator matni to'g'ridan-to'g'ri o'zgaruvchida saqlanmaydi: u uchun alohida xotira bloki ajratiladi. Va String turidagi o'zgaruvchida ob'ekt manzili (uni ko'rsatma) saqlanadi.
Rasm 2. Butun sonlar massivi pamyatda qanday joylashgan:

Bu ham mashhur rasm.
Rasm 3. Qator massivi pamyatda qanday joylashgan:

Chapda biz String[] turidagi o'zgaruvchi-massivni ko'ramiz (ob'ekt-massivining manzilini saqlaydi).
O'rtada — String turidagi ob'ekt-massiv.
O'ngda — qandaydir matnlarni saqlaydigan ob'ekt-qatorlar.
String turidagi ob'ekt-massivining hujayralarida matnlar (qatorda) emas, balki ularning manzillari (ko'rsatmalar) saqlanadi. String turidagi o'zgaruvchida saqlanadigan manzillar (matn manzillari) kabi.
Bu faktni hisobga olgan holda massivning hujayralarini solishtirishda:
|
10 qatordan iborat massiv yaratamiz Massivga qiymatlarni kiritamiz true (ko'rsatmalar teng)false (ko'rsatmalar teng emas)true (qatolar teng)true (qatolar baribir teng) |
3. Java'da massiving tezda initsializatsiya qilish
Massivlar — juda foydali narsa, shuning uchun Java dasturchilari ular bilan ishlashni maksimal darajada qulay qildi.
Va birinchi joyini beradigan narsa — bu massivning initsializatsiyasini, uni boshlang'ich qiymatlarga ega bo'lishini soddalashtirish.
Axir, dasturlar ko'p vaqtlar o'z ichki ma'lumotlariga, ular qaerdan o'qilayotganiga kerak emas. Masalan, biz oyning uzunligini massvda saqlashimiz kerak. Bu kod qanday ko‘rinishda bo'lishi mumkin:
int[] months = new int[12];
months[0] = 31; // yanvar
months[1] = 28; // fevral
months[2] = 31; // mart
months[3] = 30; // aprel
months[4] = 31; // may
months[5] = 30; // iyun
months[6] = 31; // iyul
months[7] = 31; // avgust
months[8] = 30; // sentyabr
months[9] = 31; // oktyabr
months[10] = 30; // noyabr
months[11] = 31; // dekabr
Ammmo, bu kodni qisqartirishning bir yo'li bor — Java yaratuvchilariga rahmat:
// yil oylari uzunliklari
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Massivning barcha qiymatlarini vergul bilan ajratib yozish mumkin!
Qulay-a? Ammo bu hali hammasi emas.
Ma'lum bo'lishicha, kompyuter massiv o'zgaruvchining turi asosida konteynerni (ob'ekt-massivni) aniqlay imkoniyatiga ega. Massivning uzunligini aniqlash uchun esa, egri qavslarda yozilgan elementlar sonini oddiygina hisoblab chiqadi.
Shuning uchun bu kodni yanada qisqartirish mumkin:
// yil oylari uzunliklari
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Qanday go'zal-a? 🙂
Bunday yozuv "massivni tezda initsializatsiya qilish" deb ataladi. U, aytmoqchi, int turi uchun ham ishlaydi...
// yil oylari nomlari
String[] months = { "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avgust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"};
GO TO FULL VERSION