JavaRush /Java blogi /Random-UZ /Java tilidagi massivlar

Java tilidagi massivlar

Guruhda nashr etilgan
Saqlash xonasidagi hujayralarni tasavvur qiling. Har birining o'z raqami bor va ularning har birida qandaydir "Bagaj" ob'ekti mavjud. Yoki vino ro'yxati, unda barcha turdagi vinolar raqamlangan va siz buyurtma berganingizda ichimlikning raqamini berishingiz kerak. Yoki guruhdagi talabalar ro'yxati, birinchi katakchaga "Andreev" va oxirgi katakchaga "Yakovlev" so'zlari yoziladi. Yoki samolyot yo'lovchilarining ro'yxati, ularning har biriga ma'lum bir raqamga ega bo'lgan joy ajratilgan. Java-da shunga o'xshash tuzilmalar, ya'ni juda ko'p bir xil ma'lumotlar bilan ishlash uchun Java-dagi massivlar ko'pincha ishlatiladi.

Massiv nima?

Massiv - bu bir xil turdagi elementlarni saqlaydigan ma'lumotlar strukturasi. Uni raqamlangan katakchalar to'plami sifatida ko'rish mumkin, ularning har biri ma'lum ma'lumotlarni o'z ichiga olishi mumkin (har bir hujayrada bitta ma'lumot elementi). Muayyan hujayraga kirish uning raqami orqali amalga oshiriladi. Massivdagi elementning soni indeks deb ham ataladi . Java misolida massiv bir hil, ya'ni uning barcha hujayralari bir xil turdagi elementlarni saqlaydi. Shunday qilib, butun sonlar massivida faqat butun sonlar mavjud (masalan, int tipidagi ), qatorlar massivida faqat satrlar, biz yaratgan Dog klassi elementlari massivida faqat Dog obyektlari bo‘ladi . Ya'ni, Java'da biz massivning birinchi katagiga butun sonni, ikkinchisiga Stringni va uchinchisiga "it" ni qo'ya olmaymiz. Java tilidagi massivlar

Massiv deklaratsiyasi

Massivni qanday e'lon qilish kerak?

Har qanday o'zgaruvchi singari, Java-da massiv e'lon qilinishi kerak. Buni ikkita usuldan birida qilishingiz mumkin. Ular ekvivalentdir, lekin birinchisi Java uslubiga ko'proq mos keladi. Ikkinchisi - C tilining merosi (ko'pgina C dasturchilari Java-ga o'tdilar va ularning qulayligi uchun muqobil usul qoldirildi). Jadvalda Java-da massivni e'lon qilishning ikkala usuli ko'rsatilgan:
Yo'q. Massiv deklaratsiyasi, Java sintaksisi Misollar Izoh
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
Massivni shu tarzda e'lon qilish tavsiya etiladi, bu Java uslubi
2.
dataType arrayName[];
int myArray[];

Object
arrayOfObjects[];
C/C++ dan massivlarni e'lon qilishning meros qilib olingan usuli, u Java-da ham ishlaydi
Ikkala holatda ham dataType massivdagi o'zgaruvchilar turidir. Misollarda biz ikkita massivni e'lon qildik. Birida int tipidagi tamsayılar saqlanadi , ikkinchisi Object tipidagi ob'ektlarni saqlaydi . Shunday qilib, massiv e'lon qilinganda uning nomi va turi (massiv o'zgaruvchilari turi) bo'ladi. arrayName - massivning nomi.

Massiv yaratish

Massiv qanday yaratiladi?

Boshqa har qanday ob'ekt singari, siz new operatoridan foydalanib, Java massivini yaratishingiz mumkin, ya'ni u uchun xotira maydonini zaxiralashingiz mumkin . Bu shunday amalga oshiriladi:
new typeOfArray [length];
Bu yerda typeOfArray massivning turi, uzunlik esa butun sonlarda ( int ) ifodalangan uzunligi (ya’ni katakchalar soni) hisoblanadi . Biroq, bu erda biz faqat massiv uchun xotira ajratdik, lekin yaratilgan massivni oldindan e'lon qilingan o'zgaruvchi bilan bog'lamadik. Odatda massiv avval e'lon qilinadi va keyin yaratiladi, masalan:
int[] myArray; // array declaration
myArray = new int[10]; // creation, that is, allocation of memory for an array of 10 elements of type int
Bu erda biz myArray deb nomlangan butun sonlar massivini e'lon qildik va keyin u 10 ta hujayradan iboratligini e'lon qildik (ularning har biri butun sonni saqlaydi). Biroq, deklaratsiyadan so'ng darhol ushbu stenogramma sintaksisi yordamida massiv yaratish ancha keng tarqalgan:
int[] myArray = new int[10]; // declaration and allocation of memory "in one bottle"
Eslatma:new dan foydalanib massiv yaratilgandan so'ng , uning katakchalari standart qiymatlar bilan to'ldiriladi. Raqamli turlar uchun (bizning misolimizda bo'lgani kabi) bu 0 bo'ladi, boolean uchun - false , mos yozuvlar turlari uchun - null . Shunday qilib, operatsiyadan keyin
int[] myArray = new int[10];
biz o'nta butun sonli massivni olamiz va bu dastur davomida o'zgarmaguncha, har bir katakchada 0 bo'ladi.

Java tilidagi massiv uzunligi

Yuqorida aytib o'tganimizdek, massiv uzunligi - massiv mo'ljallangan elementlar soni. Massiv yaratilgandan keyin uning uzunligini o‘zgartirib bo‘lmaydi. Eslatma:Java tilida massiv elementlari noldan boshlab raqamlanadi. Ya'ni, agar bizda 10 ta elementdan iborat massiv bo'lsa, unda massivning birinchi elementi indeks 0, oxirgisi esa 9 indeksga ega bo'ladi. UzunlikJava-dagi massivlar - 3 o'zgaruvchisi yordamida massiv uzunligiga kirishingiz mumkin . Misol:
int[] myArray = new int[10]; // created an array of integers with 10 elements and named it myArray
System.out.println(myArray.length); // printed to the console the length of the array, that is, the number of elements that we can put in the array
Dastur chiqishi:
10

Massivni ishga tushirish va uning elementlariga kirish

Java-da massivni qanday yaratish allaqachon aniq. Ushbu protseduradan so'ng biz bo'sh massivni emas, balki standart qiymatlar bilan to'ldirilgan massivni olamiz. Misol uchun, int holatida ular 0 bo'ladi va agar bizda mos yozuvlar turidagi ma'lumotlarga ega massiv bo'lsa, sukut bo'yicha har bir katakda null yoziladi . Biz massiv elementiga (ya'ni, unga qiymat yozamiz yoki uni ekranda ko'rsatamiz yoki u bilan qandaydir amallarni bajaramiz) indeksi bo'yicha kiramiz. Massivni ishga tushirish uni ma'lum ma'lumotlar bilan to'ldirishdir (sukut bo'yicha emas). Misol: keling, 4 fasl massivini yaratamiz va uni qator qiymatlari bilan to'ldiramiz - bu fasllarning nomlari.
String[] seasons  = new String[4]; /* declared and created an array. Java allocated memory for an array of 4 strings, and now each cell is null (because the string is a reference type)*/

seasons[0] = "Winter"; /* in the first cell, that is, in the cell with a zero number, we wrote the string Winter. Here we get access to the zero element of the array and write a specific value there */
seasons[1] = "Spring"; // do the same procedure with cell number 1 (second)
seasons[2] = "Summer"; // ...number 2
seasons[3] = "Autumn"; // and with the last one, number 3
Endi massivimizning barcha to'rtta katagida fasllar nomlari mavjud. Initsializatsiya, shuningdek, ishga tushirish va deklaratsiyani birlashtirib, boshqacha tarzda amalga oshirilishi mumkin:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Bundan tashqari, yangi operatorni o'tkazib yuborish mumkin:
String[] seasons  = {"Winter", "Spring", "Summer", "Autumn"};

Java-da massivni ekranda qanday ko'rsatish mumkin?

Massiv elementlarini ekranda (ya'ni konsolda) ko'rsatishingiz mumkin, masalan, for loop yordamida . Massivni ekranda ko‘rsatishning yana bir qisqaroq usuli quyidagi “Masivlar bilan ishlashning foydali usullari” bandida ko‘rib chiqiladi.Hozircha massivning siklik chiqishi misolini ko‘rib chiqamiz:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Natijada, dastur quyidagi natijani chiqaradi:
Qish Bahor Yoz Kuz

Bir o'lchovli va ko'p o'lchovli Java massivlari

Agar biz raqamlar massivi, satrlar massivi yoki ba'zi ob'ektlar massivini emas, balki massivlarni yaratmoqchi bo'lsak-chi? Java buni amalga oshirishga imkon beradi. Allaqachon tanish bo'lgan int[] myArray = new int[8] massivi bir o'lchovli massiv deb ataladi. Massivlar massivi esa ikki o‘lchovli deyiladi. Bu satr raqami va ustun raqamiga ega bo'lgan jadvalga o'xshaydi. Yoki chiziqli algebraning boshlanishini matritsada o'rgangan bo'lsangiz. Java-dagi massivlar - 4Nima uchun bunday massivlar kerak? Xususan, bir xil matritsalar va jadvallarni, shuningdek tuzilishi jihatidan ularga o'xshash ob'ektlarni dasturlash uchun. Masalan, shaxmat uchun o'yin maydoni 8x8 massiv sifatida ko'rsatilishi mumkin. Ko'p o'lchovli massiv quyidagicha e'lon qilinadi va yaratiladi:
int[][] myTwoDimentionalArray = new int [8][8];
Bu massivda aniq 64 ta element mavjud: myTwoDimentionalArray[0][0], myTwoDimentionalArray[0][1], myTwoDimentionalArray[1][0], myTwoDimentionalArray[1][1]va hokazo myTwoDimentionalArray[7][7]. Shunday qilib, agar biz uni shaxmat taxtasini tasvirlash uchun ishlatsak, u holda A1 katak ni myTwoDimentionalArray[0][0], E2 esa ni ifodalaydi myTwoDimentionalArray[4][1]. Ikki bo'lgan joyda uchta bo'ladi. Java-da siz massivlar massivini... massivlar massivlarini va hokazolarni belgilashingiz mumkin. To'g'ri, uch o'lchovli va undan ko'p massivlar juda kam qo'llaniladi. Biroq, uch o'lchovli massivdan foydalanib, siz, masalan, Rubik kubini dasturlashingiz mumkin.

Yana nimani o'qish kerak

Ko'p o'lchovli massivlar

Massivlar bilan ishlashning foydali usullari

Java-da massivlar bilan ishlash uchun java.util.Arrays klassi mavjud (ingliz tilida massivlar “massivlar” degan ma'noni anglatadi). Umuman olganda, quyidagi operatsiyalar ko'pincha massivlar bilan amalga oshiriladi: elementlar bilan to'ldirish (insializatsiya), elementni olish (raqam bo'yicha), saralash va qidirish. Massivlarni qidirish va saralash alohida mavzu. Bir tomondan, bir nechta qidirish va saralash algoritmlarini o'zingiz mashq qilish va yozish juda foydali. Boshqa tomondan, barcha eng yaxshi amaliyotlar allaqachon yozilgan va Java kutubxonalariga kiritilgan va qonuniy ravishda ishlatilishi mumkin. Mana bu sinfning uchta foydali usuli

Massivni tartiblash

Usul void sort(int[] myArray, int fromIndex, int toIndex)butun sonlar massivini yoki uning pastki qatorini o'sish tartibida tartiblaydi.

Istalgan element uchun massivni qidirish

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key). Bu usul allaqachon saralangan myArray yoki pastki qatorda fromIndex dan boshlab toIndex ga qadar asosiy elementni qidiradi . Agar element topilsa, usul o'z indeksini qaytaradi, agar topilmasa - . (-fromIndex)-1

Massivni satrga aylantirish

Usul String toString(int[] myArray)massivni satrga aylantiradi. Gap shundaki, Java massivlarida toString() ni bekor qilmaydi . Bu shuni anglatadiki, agar siz butun massivni (“ Masivni ekranga chop etish ” dagi kabi element bo‘yicha emas, balki ) to‘g‘ridan-to‘g‘ri ekranga ( System.out.println(myArray)) ko‘rsatishga harakat qilsangiz, sinf nomi va massivning o‘n oltilik xesh kodini olasiz. (bu Object.toString() tomonidan aniqlanadi ). Agar siz yangi boshlovchi bo'lsangiz, usulning tushuntirishini tushunmasligingiz mumkin toString. Birinchi bosqichda bu shart emas, lekin bu usul yordamida massivning chiqishi soddalashtiriladi. Java massivni tsikldan foydalanmasdan ko'rsatishni osonlashtiradi. Quyidagi misolda bu haqda ko'proq ma'lumot.

Saralash, binarySearch va toString bo'yicha misol

Keling, butun sonlar massivini yaratamiz, uni toString yordamida ekranda ko'rsatamiz , sort usuli yordamida saralaymiz va undagi bir nechta raqamni topamiz.
class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; //declaring and initializing the array
        System.out.println(array);//trying to display our array on the screen without the toString method - we get a hexadecimal number
        System.out.println(Arrays.toString(array));//печатаем массив "правильно"
        Arrays.sort(array, 0, 4); // sort the entire array from zero to the fourth member
        System.out.println(Arrays.toString(array));//print the sorted array to the screen
        int key = Arrays.binarySearch(array, 5); // ищем key - число 5 в отсортированном массиве.
        //binarySearch method will return the index of the sorted array element, in which the required number is "hidden"
        System.out.println(key);//распечатываем индекс искомого числа
System.out.println(Arrays.binarySearch(array, 0));//а теперь попробуем найти число, которого в массиве нет,
        // and immediately display the result on the screen

    }
}
Dastur chiqishi:
[I@1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
Birinchi qator toString dan foydalanmasdan massivni ko'rsatishga urinish , ikkinchisi toString yordamida massivni ko'rsatish , uchinchisi tartiblangan massiv, to'rtinchisi tartiblangan massivdagi kerakli 5 raqamining indeksi (esda tutingki, biz dan sanab o'tamiz. nolga teng, shuning uchun massivning to'rtinchi elementi indeksga ega 3). Beshinchi qatorda biz qiymatni ko'ramiz -1 . Massivda bunday indeks mavjud emas. Chiqish kerakli elementning (bu holda, 0) massivda yo'qligi haqida signal beradi.

Array sinf usullari haqida ko'proq

Arrays sinfi va undan foydalanish - maqolada Array sinfining ba'zi usullari tasvirlangan

Massivlar haqida asosiy narsa

  • Massivning asosiy xarakteristikalari: unda joylashtirilgan ma'lumotlar turi, nomi va uzunligi.
    Ikkinchisi ishga tushirish vaqtida (massiv uchun xotira ajratish) hal qilinadi, dastlabki ikkita parametr massivni e'lon qilishda aniqlanadi.

  • Massiv hajmi (hujayralar soni) int da aniqlanishi kerak

  • Massiv yaratilgandan keyin uning uzunligini o‘zgartirib bo‘lmaydi.

  • Massiv elementiga uning indeksi orqali kirish mumkin.

  • Java-ning boshqa joylarida bo'lgani kabi massivlarda ham elementlar noldan boshlab raqamlanadi.

  • Massiv yaratish protsedurasidan so'ng u standart qiymatlar bilan to'ldiriladi.

  • Java tilidagi massivlar C++ tiliga qaraganda boshqacha tuzilgan. Ular dinamik massivlarga ko'rsatgichlar bilan deyarli bir xil.

Massivlar haqida foydali materiallar

Massivlar haqida ko'proq bilmoqchimisiz? Iltimos, quyidagi maqolalarni ko'rib chiqing. Ushbu mavzu bo'yicha juda ko'p qiziqarli va foydali ma'lumotlar mavjud.
  1. Massivlar haqida bir narsa - massivlar haqida yaxshi batafsil maqola

  2. Arrays sinfi va undan foydalanish - maqolada Array sinfining ba'zi usullari tasvirlangan

  3. Ko'p o'lchovli massivlar - misollar bilan ko'p o'lchovli massivlar haqida batafsil maqola.

  4. Null emas, nol uzunlikdagi massivni qaytaring - Samarali dasturlash muallifi Joshua Bloch bo'sh massivlarni qanday qilib yaxshiroq qaytarish haqida gapiradi

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