JavaRush /Kurslar /All lectures for UZ purposes /Massivlar bilan ilg'or ishlash

Massivlar bilan ilg'or ishlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

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 console = new Scanner(System.in);
String[] array = new String[10];
for (int i = 0; i < 10; i++)
{
   array[i] = console.nextLine();
}
for (int i = 9; i >= 0; i--)
{
   System.out.println(array[i]);
}
Scanner obyektini yaratamiz
10 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:

String типidagi массив в памяти

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:

String типидаги массив в памяти

Bu ham mashhur rasm.

Rasm 3. Qator massivi pamyatda qanday joylashgan:

String массив в памяти кандай жойлашган

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:

String[] array = new String[10];
 array[1] = "Salom";
array[2] = array[1];
array[3] = new String("Salom");
// taqqoslaymiz
array[1] == array[2];
array[1] == array[3];
array[1].equals(array[3]);
array[1].equalsIgnoreCase(array[3]);
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"};

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION