Massiv odatda bir-biri bilan qandaydir tarzda
bog'langan ma'lumotlar to'plamidir. Aytaylik, siz xohlaysiz
4.2. Massivlar 55
dasturda 5 foydalanuvchilar yoshi haqidagi ma'lumotlarni saqlash. Ularni user1Age, user2Age, user3Age, user4Age
va user5Age nomlari ostida saqlash o‘rniga ular bo‘lishi mumkin.
massivda saqlang.
Massiv o‘zgaruvchisi ikki usulda e’lon qilinishi mumkin. Birinchi versiyada u quyidagicha e'lon qilinadi:
int[] foydalanuvchi;
int turi o'zgaruvchini saqlashini bildiradi
int qiymatlari .
[] oÿzgaruvchining oddiy oÿzgaruvchi emas, balki massiv ekanligini koÿrsatadi.
userAge - massivning nomi.
Ikkinchi versiyada u quyidagicha e'lon qilinadi:
int userAge[];
C/C++ tilidan kelib chiqqan bu uslub Java tomonidan C/C++
dasturchilariga qulaylik yaratish maqsadida qabul qilingan. Shunga qaramasdan
bu sintaksis afzal deb hisoblanmaydi
javada. Kitobda biz birinchi uslubga yopishib olamiz.
Massiv o'zgaruvchisini e'lon qilgandan so'ng, siz massiv yaratishingiz va uni o'zgaruvchiga belgilashingiz kerak. Buning uchun yangi kalit so'z ishlatiladi :
int[] foydalanuvchi;
userAge = new int[] {21, 22, 23, 24, 25};
Birinchi buyruq userAge massiv o'zgaruvchisini e'lon
qiladi. Ikkinchi buyruq {21, 22, 23, 24, 25} massivni yaratadi. va uni userAge o'zgaruvchisiga tayinlaydi. userAge o'zgaruvchisiga hali massiv tayinlanmaganligi sababli,
56 4 -bob. Massivlar va satrlar
buyruq userAge ni yaratilgan massiv bilan ishga tushiradi. Massiv ishga tushirilgandan so'ng uning hajmini o'zgartirib bo'lmaydi. Bu holda userAge massivi faqat 5 ta qiymatni saqlash uchun ishlatilishi mumkin, chunki u 5 ta butun son bilan ishga tushirilgan. {21, 22, 23, 24, 25} - hozirda massivda saqlangan beshta butun son.
Ikkita buyruqda massivni e'lon qilish va ishga tushirishdan tashqari siz ikkita buyruqni birlashtira olasiz
qisqartirilgan sintaksis:
int[] userAge2 = new int[] {21, 22, 23, 24, 25};
Ushbu buyruqni yanada soddalashtirish mumkin:
int[] userAge2 = {21, 22, 23, 24, 25};
Boshqacha qilib aytganda, bir xil buyruqda massivni e'lon qilish va ishga tushirishda new int[] so'zlarini o'tkazib yuborish mumkin.
Massivni e'lon qilish va ishga tushirishning uchinchi usuli
shunday ko'rinadi:
int[] userAge3 = new int[5];
Buyruq userAge3 massivini e'lon qiladi va uni 5 ta butun sonli massiv bilan ishga tushiradi ( kvadrat qavs ichidagi 5 raqami [ ] bilan ko'rsatilgandek). Ushbu 5 ta raqam ko'rsatilmaganligi sababli, Java avtomatik ravishda massiv yaratadi, elementlarni standart qiymat bilan ishga tushiradi va uni userAge3 ga tayinlaydi. Butun sonlar uchun standart qiymat 0 ga teng.
Shuning uchun userAge3 o‘zgaruvchisi
{0, 0, 0, 0, 0} qiymatini o'z ichiga oladi .
Indeks bo'yicha kirish orqali alohida massiv elementlarining
qiymatlarini o'zgartirishingiz mumkin . Shuni yana bir bor eslatib o'taman
4.2. Massivlar 57
indekslar har doim 0 dan boshlanadi. Massivning birinchi elementi indeks 0, keyingi elementi indeks 1 va hokazo. Aytaylik userAge massivida hozirda {21, 22, 23, 24, 25} elementlar mavjud. Birinchisini yangilash uchun
massiv elementi, buyruqni bajaring
userAge[0] = 31;
Massiv {31, 22, 23, 24, 25} ga aylanadi .
Agar siz buyruqni kiritsangiz
userAge[2] = userAge[2] + 20;
massivda {31, 22, 43, 24, 25} elementlar bo‘ladi . Boshqacha qilib aytganda, uchinchi element 20 ga oshiriladi.
MASSIV USULLARI
Massivlar, xuddi qatorlar kabi, tayyor usullar to'plamini o'z ichiga oladi.
Quyida muhokama qilingan usullar java.util.Arrays sinfida . Ulardan foydalanish uchun qo'shing
dastur buyrug'ida
import java.util.Arrays;
Buyruq kompilyatorga bularning kodi qaerdaligini aytadi usullari.
Import buyrug'i dasturda paketlar buyrug'idan keyin, lekin sinf deklaratsiyasidan oldin paydo bo'lishi kerak . Misol:
helloworld paketi; import java.util.Arrays;
umumiy sinf Salom dunyo {
// HelloWorld sinf kodi
}
58 4 -bob. Massivlar va satrlar
Ammo oldin, biz String sinfini ishlatganimizda, hech qanday import buyruqlari kiritilmagan! Buning sababi, String sinfi java.lang paketining bir qismi bo'lib , u barcha Java dasturlarida sukut bo'yicha import qilinadi.
Endi tez-tez ishlatiladigan ba'zilarini ko'rib chiqaylik
massiv usullari.
equals() - usul ikki massivning tengligini tekshiradi. Agar massivlar teng bo'lsa, usul rost, agar bo'lmasa, noto'g'ri qaytaradi. Ikki massiv teng deb hisoblanadi, agar ular
bir xil miqdordagi elementlarni o'z ichiga oladi va bu elementlar
politsiyachilar teng va bir xil tartibda ergashadilar.
Aytaylik, bizda quyidagi dastur fragmenti bor:
int[] arr1 = {0,2,4,6,8,10};
int[] arr2 = {0,2,4,6,8,10};
int[] arr3 = {10,8,6,4,2,0};
mantiqiy natija1 = Arrays.equals(arr1, arr2); mantiqiy natija2 = Arrays.equals(arr1, arr3);
Natija1 o'zgaruvchisi to'g'ri bo'ladi va natija2 o'zgaruvchisi noto'g'ri bo'ladi . Natija2 ning bu qiymati , chunki arr1 va arr3 bir xil elementlarni o'z ichiga olsa ham, bu elementlar teskari tartibda joylashgan. Shunga ko'ra, bu ikki massiv teng deb hisoblanmaydi.
E'tibor bering, ushbu misolda Massivlar so'zi usul nomidan oldin qo'shilgan. Gap shundaki, Arrays sinfining barcha usullari statikdir. Statik usulni chaqirish uchun uning oldiga sinf nomini qo'ying. Statik usullar 7-bobda batafsil yoritilgan.
4.2. Massivlar 59
copyOfRange() - metod bir massiv tarkibini boshqa massivga nusxalaydi. Chaqirilsa, u uchta oladi dalil.
Aytaylik, bizda quyidagi massiv bor:
int[] manba = {12, 1, 5, -2, 16, 14, 18, 20, 25};
Manba mazmuni quyidagi buyruq bilan yangi maqsadli massivga ko'chirilishi mumkin :
int[] dest = Arrays.copyOfRange(manba, 3, 7);
Birinchi argument (manba) nusxalanadigan qiymatlari
bo'lgan massivni belgilaydi . Ikkinchi va uchinchi dalillar birgalikda
kompilyatorga nusxa ko'chirish mos ravishda qaysi
indeksda boshlanishi va to'xtashi kerakligini ayting. Aks holda Boshqacha qilib aytganda, bizning misolimiz 3-indeksdan 6- inklyuziv indeksga elementlarni ko'chiradi (ya'ni, 7-indeksdagi element ko'chirilmaydi).
Elementlarni nusxalashdan so'ng copyOfRange() usuli nusxalangan raqamlar bilan massivni qaytaradi. Bu massiv maqsad uchun tayinlangan .
Shunday qilib, nusxa ko'chirishdan so'ng maqsadli
massivda {-2, 16, 14, 18} elementlar bo'ladi, manba massiv esa
o'zgarishsiz qoladi.
toString() usuli massiv elementlarini ifodalovchi String obyektini qaytaradi . Ushbu konvertatsiya massiv tarkibini chiqarishni soddalashtiradi. Aytaylik
massiv
int[] raqamlari = {1, 2, 3, 4, 5};
60 4 -bob. Massivlar va satrlar
Raqamlar tarkibini ko'rsatish uchun quyidagi buyruqdan foydalanish mumkin .
System.out.println(Masivlar.toString(raqamlar));
Buyruq qatorni chiqaradi
[1, 2, 3, 4, 5]
chiqish oynasida.
sort() - usul massivlarni saralash uchun mo'ljallangan. Argument sifatida massiv uzatiladi.
Aytaylik, bizda massiv bor
int[] raqamlar2 = {12, 1, 5, -2, 16, 14};
Massivni saralash uchun quyidagilarni bajaring
buyruq:
Massivlar.sort(raqamlar2);
Massiv o'sish tartibida tartiblanadi.
sort() usuli yangi massivni qaytarmaydi . Bu shunchaki qo'ng'iroqda o'tkazilgan massivni o'zgartiradi. Boshqacha qilib aytganda, u bizning misolimizdagi numbers2 massivini o'zgartiradi . Shundan so'ng siz buyruqni ishlatishingiz mumkin
System.out.println(Masivlar.toString(raqamlar2));
tartiblangan massivni chiqarish uchun. Buyruqlar bilan bog'liq muammolar
natija
[-2, 1, 5, 12, 14, 16]
binarySearch() - usul tartiblangan massivda ma'lum
bir qiymatni qidiradi . Ushbu usuldan foydalanish uchun,
Massivlar 61
avval massivni tartiblashingiz kerak. Saralash uchun siz sort() usulidan foydalanishingiz mumkin,
yuqorida tavsiflangan.
Aytaylik, bizda quyidagi massiv bor:
int[] myInt = {21, 23, 34, 45, 56, 78, 99};
78 qiymati massada mavjudligini aniqlash uchun
sive, buyruqni bajaring
int foundIndex = Arrays.binarySearch(myInt, 78);
foundIndex qiymati 5 bo'ladi. Bu 78 raqami 5 indeksidagi massiv elementida ekanligini ko'rsatadi.
Boshqa tomondan, buyruqni bajarayotganda
int foundIndex2 = Arrays.binarySearch(myInt, 39);
foundIndex2 qiymati -4 bo'ladi .
Bu natija ikki qismdan iborat - "-" belgisi va 4 raqami.
"-" belgisi shunchaki 39 qiymati topilmaganligini anglatadi.
4 raqami bilan vaziyat yanada murakkab. Agar u massivda mavjud bo'lsa, berilgan raqam qayerda bo'lishini ko'rsatadi . Bunda indeks 1 ga ortadi.Boshqacha aytganda, agar massivda 39 soni mavjud bo lsa, u holda u 4-1=3 indeksli elementda bo lar edi.
Ushbu bo'lim ba'zi tez-tez ishlatiladigan massiv usullarini qamrab oldi. Barcha massiv usullarining toÿliq roÿyxati uchun https://docs-ga qarang.
oracle.com/javase/8/docs/api/java/util/Arrays.html.
62 4 -bob. Massivlar va satrlar
MASSIV UZUNLIGINI ANIQLASH
Va nihoyat, keling, massiv uzunligini qanday aniqlash mumkinligini ko'rib chiqamiz . Massiv uzunligi massivdagi elementlar sonini bildiradi . Avvalroq, satrlarni muhokama qilganda, satrlar uzunligini aniqlash uchun length() usulidan foydalanish mumkinligini eslatib o'tdik .
G'alati, arrays uchun length() usuli qo'llab- quvvatlanmaydi . Uzunlik maydoni massiv uzunligini aniqlash uchun ishlatiladi . Biz maydonlar va usullarni 7-bobda ko‘rib chiqamiz. Hozircha massiv uzunligini
olish uchun uzunlikdan keyin qavs qo‘shish shart emasligini bilish
Masalan, massiv uchun
int[] userAge = {21, 22, 26, 32, 40};
userAge.length 5 ta, chunki massivda 5 ta raqam mavjud .
PRIMITIV TURLAR VA REFERANS TURLARI
Massivlar va satrlar bilan tanishganingizdan so'ng, siz Java-da ma'lumotlar turlari bo'yicha bitta muhim tushunchaga o'tishingiz mumkin.
Java'dagi barcha ma'lumotlar turlari ibtidoiy va mos yozuvlar turlariga bo'linadi . Java tilida atigi 8 ta ibtidoiy tip
mavjud (bayt, qisqa, int, uzun, float, double, char va mantiqiy), qolganlari mos yozuvlar turlari. havola qilish
zikr qilingan o'z satrlari va massivlarini turlari
Primitiv tiplar va mos yozuvlar turlari 63
ushbu bobda, shuningdek, 7 va 8-boblarda ko'rib chiqiladigan sinflar va interfeyslar.
Ibtidoiy va mos yozuvlar turlari o'rtasidagi asosiy farqlardan biri qaysi ma'lumotlarning saqlanganligi bilan bog'liq.
xotira turida.
Primitiv tip o'z ma'lumotlarini saqlaydi.
Biz yozganimizda
int myNumber = 5;
myNumber o'zgaruvchisi haqiqiy qiymatni saqlaydi 5.
Boshqa tomondan, mos yozuvlar turi o'z ma'lumotlarini saqlamaydi . Buning o'rniga, ma'lumotlarga havola saqlanadi.
Ma'lumotnoma kompilyatorga ma'lumotlarning qiymatini
bildirmaydi ; kompilyatorga ma'lumotlarni qaerdan topish mumkinligini aytadi .
Malumot turiga misol String. kabi buyruq berganingizda
String xabar = "Salom";
"Salom" qatori xabar o'zgaruvchisida saqlanmaydi .
Buning o'rniga "Salom" qatori yaratiladi va kompyuter xotirasining boshqa joyida saqlanadi. Xabar o'zgaruvchisida
ushbu xotira blokining manzili saqlanadi.
Hozircha mos yozuvlar turlari haqida bilish kerak bo'lgan narsa shu . Kitob yangi boshlanuvchilar uchun mo'ljallanganligi sababli , biz mos yozuvlar turlari nima uchun kerakligini
batafsil muhokama qilmaymiz . Faqat farqlardan xabardor bo'ling
ibtidoiy va mos yozuvlar turi o'rtasida; birinchi ma'badda qiymat, ikkinchisida esa - manzil.
64 4 -bob. Massivlar va satrlar
Satrlar va o'zgarmaslik
Ushbu bo'limni yopishdan oldin , torlar bilan bog'liq yana bir tushunchani eslatib o'tmoqchiman . Ya'ni,
Java'da (va boshqa ko'plab tillarda) satrlar o'zgarmasdir.
O'zgarmaslik satr qiymatini o'zgartirib bo'lmasligini anglatadi. Har safar String o'zgaruvchisini yangilaganingizda, siz aslida yangi satr yaratasiz va uning manzilini String o'zgaruvchisiga xotirada
belgilaysiz. Bir misolni ko'rib chiqing. Aytaylik, bizda buyruq bor
String xabar = "Salom";
Yuqorida aytib o'tgan edimki, kompilyator "Salom" qatorini yaratadi va uni kompyuter xotirasida saqlaydi.
O'zgaruvchan xabar ushbu xotira blokining manzilini
saqlaydi . Agar biz hozir o'zgaruvchan xabarning qiymatini yangilasak
va unga "World" qatorini bering:
xabar = "dunyo";
kompilyator qiymatni "Dunyo" ga o'zgartirish uchun "Salom" qatori saqlanadigan xotira blokiga kirmaydi . Buning o'rniga u yangi "Dunyo" qatorini yaratadi va uni kompyuter xotirasida boshqa joyda saqlaydi. Yangi manzil xabarga tayinlangan . Boshqacha qilib aytganda, hozir xotirada ikkita satr mavjud: "Salom" va "Dunyo".
Xabarda "Jahon" manzili saqlanadi . Agar dasturda "Salom" qatori endi ishlatilmasa, u xotiraning ushbu maydonini bo'shatish uchun yo'q qilinadi. Bu axlat yig'ish deb ataladigan jarayon Java tomonidan avtomatik ravishda taqdim etiladi.
Machine Translated by Google
5
Do'stlaringiz bilan baham: |