Massiv nədir?
Massiv eyni tipli elementləri saxlayan məlumat strukturudur. Onu nömrələnmiş xanalar toplusu kimi düşünmək olar, onların hər birində bəzi məlumatlar ola bilər (hər xanada bir məlumat elementi). Müəyyən bir hüceyrəyə giriş onun nömrəsi vasitəsilə həyata keçirilir. Massivdəki elementin nömrəsinə də indeks deyilir . Java vəziyyətində massiv homojendir, yəni onun bütün hüceyrələri eyni tipli elementləri saxlayacaq. Beləliklə, tam ədədlər massivi yalnız tam ədədləri ehtiva edir (məsələn, int tipli ), sətirlər massivi yalnız sətirləri ehtiva edir, yaratdığımız Dog sinifinin elementləri massivi yalnız Dog obyektlərini ehtiva edir . Yəni Java-da massivin birinci xanasına tam ədəd, ikincisinə String və üçüncü xanaya “it” qoya bilmərik.Massiv bəyannaməsi
Massivi necə elan etmək olar?
İstənilən dəyişən kimi Java-da massiv elan edilməlidir. Bunu iki yoldan biri ilə edə bilərsiniz. Onlar ekvivalentdir, lakin birincisi Java üslubuna daha uyğundur. İkincisi, C dilinin mirasıdır (bir çox C proqramçıları Java-ya keçdilər və onların rahatlığı üçün alternativ bir üsul qaldı). Cədvəl Java-da massiv elan etməyin hər iki yolunu göstərir:Yox. | Massiv bəyanı, Java sintaksisi | Nümunələr | Şərh |
---|---|---|---|
1. |
|
|
Massivi bu şəkildə elan etmək məqsədəuyğundur, bu Java üslubudur |
2. |
|
|
Java-da da işləyən C/C++-dan massivlərin elan edilməsinin miras qalmış yolu |
Massivin yaradılması
Massiv necə yaradılır?
Hər hansı digər obyekt kimi, siz new operatorundan istifadə edərək Java massivi yarada, yəni onun üçün yaddaşda yer saxlaya bilərsiniz . Bu belə edilir:new typeOfArray [length];
Burada typeOfArray massivin növüdür, uzunluq isə tam ədədlərlə ( int ) ifadə olunan uzunluğudur (yəni xanaların sayıdır) . Bununla belə, burada biz yalnız massiv üçün yaddaş ayırmışıq, lakin yaradılmış massivi əvvəllər elan edilmiş dəyişənlərlə əlaqələndirməmişik. Adətən massiv əvvəlcə elan edilir və sonra yaradılır, məsələn:
int[] myArray; // array declaration
myArray = new int[10]; // creation, that is, allocation of memory for an array of 10 elements of type int
Burada myArray adlı tam ədədlər massivini elan etdik və sonra onun 10 xanadan ibarət olduğunu bildirdik (hər biri tam ədəd saxlayacaq). Bununla belə, bu stenoqram sintaksisindən istifadə edərək bəyannamədən dərhal sonra massiv yaratmaq daha çox yayılmışdır:
int[] myArray = new int[10]; // declaration and allocation of memory "in one bottle"
Qeyd:new istifadə edərək massiv yaratdıqdan sonra onun xanaları standart dəyərlərlə doldurulur. Rəqəm növləri üçün (bizim nümunəmizdə olduğu kimi) bu 0, boolean üçün - false , istinad növləri üçün - null olacaq . Beləliklə, əməliyyatdan sonra
int[] myArray = new int[10];
on tam ədəddən ibarət massiv alırıq və bu proqram zamanı dəyişənə qədər hər bir xana 0-dan ibarətdir.
Massivlər haqqında daha çox məlumatı “ Massivlər haqqında bir şey ” məqaləsində tapa bilərsiniz. |
Java-da massiv uzunluğu
Yuxarıda dediyimiz kimi, massivin uzunluğu massivin tərtib olunduğu elementlərin sayıdır. Massiv yaradıldıqdan sonra onun uzunluğu dəyişdirilə bilməz. Qeyd:Java-da massiv elementləri sıfırdan başlayaraq nömrələnir. Yəni, əgər bizdə 10 elementdən ibarət massiv varsa, o zaman massivin birinci elementinin indeksi 0, sonuncunun isə 9 indeksi olacaq. Siz uzunluq dəyişənindən istifadə edərək massivin uzunluğuna daxil ola bilərsiniz . Misal: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
Proqram çıxışı:
Massivin işə salınması və onun elementlərinə daxil olması
Java-da massiv necə yaratmaq artıq aydındır. Bu prosedurdan sonra biz boş massiv yox, standart dəyərlərlə dolu massiv alırıq. Məsələn, int vəziyyətində bunlar 0 olacaq və əgər istinad tipli verilənləri olan massivimiz varsa, defolt olaraq hər bir xanada null yazılır . Biz massiv elementinə onun indeksi ilə daxil oluruq (yəni ona qiymət yazırıq və ya onu ekranda göstəririk və ya onunla hansısa əməliyyat həyata keçiririk). Massivin işə salınması onu xüsusi məlumatlarla doldurmaqdır (standart olaraq deyil). Nümunə: gəlin 4 mövsüm massivi yaradaq və onu simli dəyərlərlə dolduraq - bu fəsillərin adları.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
İndi massivimizin dörd xanasının hamısında fəsillərin adları var. İnisiallaşdırma da inisiallaşdırma və bəyannaməni birləşdirərək fərqli şəkildə həyata keçirilə bilər:
String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Bundan əlavə, yeni operator buraxıla bilər:
String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};
Java-da massivi ekranda necə göstərmək olar?
Siz massiv elementlərini ekranda (yəni konsolda) göstərə bilərsiniz, məsələn, for loopundan istifadə etməklə . Massivi ekranda göstərməyin başqa, daha qısa yolu aşağıdakı “Massivlərlə işləmək üçün faydalı üsullar” paraqrafında müzakirə olunacaq.Hələlik, massivin tsiklik çıxışı ilə bir nümunəyə baxaq:String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Nəticədə, proqram aşağıdakı nəticəni verəcəkdir:
Birölçülü və çoxölçülü Java massivləri
Əgər biz ədədlər massivi, sətirlər massivi və ya bəzi obyektlərin massivi deyil, massivlər massivi yaratmaq istəsək necə olar? Java sizə bunu etməyə imkan verir. Artıq tanış olan int[] myArray = new int[8] massivi birölçülü massiv adlanan massivdir. Və massivlər massivi ikiölçülü adlanır. Bu, sıra nömrəsi və sütun nömrəsi olan cədvələ bənzəyir. Və ya xətti cəbrin başlanğıcını matrisdə öyrənmisinizsə. Niyə belə massivlərə ehtiyac var? Xüsusilə, eyni matrisləri və cədvəlləri, həmçinin strukturuna görə onlara bənzəyən obyektləri proqramlaşdırmaq üçün. Məsələn, şahmat üçün oyun sahəsi 8x8 massivi kimi göstərilə bilər. Çoxölçülü massiv aşağıdakı kimi elan edilir və yaradılır:int[][] myTwoDimentionalArray = new int [8][8];
Bu massivdə tam olaraq 64 element var: myTwoDimentionalArray[0][0]
, myTwoDimentionalArray[0][1]
, myTwoDimentionalArray[1][0]
və myTwoDimentionalArray[1][1]
s -ə qədər myTwoDimentionalArray[7][7]
. Beləliklə, əgər biz onu şahmat taxtasını təmsil etmək üçün istifadə etsək, onda A1 xanası myTwoDimentionalArray[0][0]
, E2 isə təmsil olunacaq myTwoDimentionalArray[4][1]
. İki olan yerdə üç də var. Java-da siz massivlər massivi... massivlər massivi və s. təyin edə bilərsiniz. Düzdür, üçölçülü və daha çox massivlər çox nadir hallarda istifadə olunur. Bununla belə, üçölçülü massivdən istifadə edərək, məsələn, Rubik kubunu proqramlaşdıra bilərsiniz.
Başqa nə oxumaq |
---|
Massivlərlə işləmək üçün faydalı üsullar
Java-da massivlərlə işləmək üçün java.util.Arrays sinfi var (ingilis dilində massivlər “massivlər” deməkdir). Ümumiyyətlə, aşağıdakı əməliyyatlar ən çox massivlərlə yerinə yetirilir: elementlərlə doldurma (initializasiya), elementin axtarışı (nömrə görə), çeşidləmə və axtarış. Massivlərin axtarışı və çeşidlənməsi ayrıca mövzudur. Bir tərəfdən, bir neçə axtarış və çeşidləmə alqoritmlərini özünüz məşq etmək və yazmaq çox faydalıdır. Digər tərəfdən, bütün ən yaxşı təcrübələr artıq yazılmış və Java kitabxanalarına daxil edilmişdir və qanuni olaraq istifadə edilə bilər.
Axtarmaq və çeşidləmək üçün məqalələr: Nəzəriyyə və praktikada çeşidləmə alqoritmləri Java-da qabarcıq çeşidləmənin tətbiqi CS50 kursunda çeşidləmə və axtarış: Çeşidləmə alqoritmləri. Bubble çeşidi |
Massivi çeşidləyin
Metodvoid sort(int[] myArray, int fromIndex, int toIndex)
tam ədədlər massivini və ya onun alt massivini artan qaydada çeşidləyir.
İstədiyiniz element üçün massiv axtarılır
int binarySearch(int[] myArray, int fromIndex, int toIndex, int key)
. Bu üsul, fromIndex- dən başlayaraq toIndex- ə qədər artıq çeşidlənmiş myArray və ya alt massivdə əsas elementi axtarır . Element tapılarsa, metod öz indeksini qaytarır, yoxsa - . (-fromIndex)-1
Massivin sətirə çevrilməsi
MetodString toString(int[] myArray)
massivi sətirə çevirir. Məsələ ondadır ki, Java massivlərində toString() funksiyasını ləğv etmir . Bu o deməkdir ki, əgər siz bütün massivi (“ Ekrana Massivin Çap edilməsi ” ndə olduğu kimi element-element əvəzinə ) birbaşa ekranda göstərməyə çalışsanız ( System.out.println(myArray)
), siz massivin sinfinin adını və onaltılıq hash kodunu alacaqsınız. (bu Object.toString() tərəfindən müəyyən edilir ). Bir başlanğıcsınızsa, metodun izahını başa düşməyə bilərsiniz toString
. Birinci mərhələdə bu lazım deyil, lakin bu metoddan istifadə edərək massivin çıxışı sadələşdirilir. Java bir döngə istifadə etmədən massivi göstərməyi asanlaşdırır. Aşağıdakı nümunədə bu barədə daha çox məlumat.
Sort, binarySearch və toString üçün nümunə
Gəlin tam ədədlər massivi yaradaq, onu toString istifadə edərək ekranda göstərək , sort metodundan istifadə edərək çeşidləyək və orada bir neçə ədəd tapaq.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
}
}
Proqram çıxışı:
Array sinif metodları haqqında ətraflı Arrays sinfi və onun istifadəsi - məqalədə Array sinfinin bəzi üsulları təsvir edilmişdir |
Massivlər haqqında əsas şey
-
Massivin əsas xüsusiyyətləri: orada yerləşdirilən məlumatların növü, adı və uzunluğu.
Sonuncu inisializasiya zamanı (massiv üçün yaddaşın ayrılması) qərar verilir, ilk iki parametr massiv elan edilərkən müəyyən edilir. -
Massivin ölçüsü (xanaların sayı) int ilə müəyyən edilməlidir
-
Massiv yaradıldıqdan sonra onun uzunluğunu dəyişə bilməzsiniz.
-
Massiv elementinə onun indeksi ilə daxil olmaq olar.
-
Java-nın başqa yerlərində olduğu kimi massivlərdə də elementlər sıfırdan başlayaraq nömrələnir.
-
Massiv yaratmaq prosedurundan sonra o, standart dəyərlərlə doldurulur.
-
Java-da massivlər C++-dan fərqli olaraq strukturlaşdırılmışdır. Onlar dinamik massivlərin göstəriciləri ilə demək olar ki, eynidir.
Massivlər haqqında faydalı materiallar
Massivlər haqqında daha çox bilmək istəyirsiniz? Zəhmət olmasa aşağıdakı məqalələrə nəzər salın. Bu mövzuda çox maraqlı və faydalı məlumatlar var.-
Massivlər haqqında bir şey - Massivlər haqqında yaxşı ətraflı məqalə
-
Arrays sinfi və onun istifadəsi - məqalədə Array sinfinin bəzi üsulları təsvir edilmişdir
-
Çoxölçülü massivlər - nümunələrlə çoxölçülü massivlər haqqında ətraflı məqalə.
-
Sıfır uzunluqlu massivi qaytarın, null deyil - Effektiv Proqramlaşdırma müəllifi Joshua Bloch boş massivləri necə daha yaxşı qaytarmaq barədə danışır
GO TO FULL VERSION