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.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. |
|
|
Massivni shu tarzda e'lon qilish tavsiya etiladi, bu Java uslubi |
2. |
|
|
C/C++ dan massivlarni e'lon qilishning meros qilib olingan usuli, u Java-da ham ishlaydi |
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.
Massivlar haqida ko'proq ma'lumotni " Masivlar haqida bir narsa " maqolasida topishingiz mumkin. |
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. Uzunlik 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:
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:
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. Nima 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 |
---|
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.
Qidirish va saralash uchun maqolalar: Nazariy va amaliyotda saralash algoritmlari Java-da pufakchali tartiblashni amalga oshirish CS50 kursida saralash va qidirish: Saralash algoritmlari. Pufakcha tartiblash |
Massivni tartiblash
Usulvoid 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
UsulString 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:
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.-
Massivlar haqida bir narsa - massivlar haqida yaxshi batafsil maqola
-
Arrays sinfi va undan foydalanish - maqolada Array sinfining ba'zi usullari tasvirlangan
-
Ko'p o'lchovli massivlar - misollar bilan ko'p o'lchovli massivlar haqida batafsil maqola.
-
Null emas, nol uzunlikdagi massivni qaytaring - Samarali dasturlash muallifi Joshua Bloch bo'sh massivlarni qanday qilib yaxshiroq qaytarish haqida gapiradi
GO TO FULL VERSION