JavaRush /Java Blogu /Random-AZ /Java-da massivlər

Java-da massivlər

Qrupda dərc edilmişdir
Anbar otağındakı hüceyrələri təsəvvür edin. Hər birinin öz nömrəsi var və hər birində bir növ “Baqaj” obyekti var. Və ya bütün növ şərabların nömrələndiyi şərab siyahısı və sifariş verərkən sadəcə içkinin nömrəsini vermək kifayətdir. Və ya qrupdakı tələbələrin siyahısı, hansı tələbə "Andreev" birinci xanada, "Yakovlev" isə sonuncu xanada yazılacaq. Və ya hər birinə müəyyən nömrə ilə oturacaq təyin edilmiş təyyarə sərnişinlərinin siyahısı. Java-da oxşar strukturlarla, yəni çoxlu homojen verilənlərlə işləmək üçün Java-da massivlərdən tez-tez istifadə olunur.

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. Java-da massivlər

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.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
Massivi bu şəkildə elan etmək məqsədəuyğundur, bu Java üslubudur
2.
dataType arrayName[];
int myArray[];

Object
arrayOfObjects[];
Java-da da işləyən C/C++-dan massivlərin elan edilməsinin miras qalmış yolu
Hər iki halda dataType massivdəki dəyişənlərin növüdür. Nümunələrdə iki massiv elan etdik. Biri int tipli tam ədədləri , digəri isə Object tipli obyektləri saxlayacaq . Beləliklə, massiv elan edildikdə onun adı və növü (massiv dəyişənlərinin növü) olur. arrayName massivin adıdır.

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.

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 uzunluqJava-da massivlər - 3 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ışı:
10

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:
Qış Bahar Yay Payız

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ə. Java-da massivlər - 4Niyə 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]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

Çoxölçülü massivlər

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. Bu sinifin üç faydalı üsulu var

Massivi çeşidləyin

Metod void 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

Metod String 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ışı:
[I@1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
Birinci sətir massivi toString olmadan göstərmək cəhdidir , ikincisi toString istifadə edərək massivi göstərir , üçüncü sıralanmış massivdir, dördüncüsü çeşidlənmiş massivdə istədiyiniz 5 rəqəminin indeksidir (unutmayın ki, biz buradan sayırıq) sıfırdır, buna görə də massivin dördüncü elementi 3) indeksinə malikdir. Beşinci sətirdə -1 dəyərini görürük . Massivin belə indeksi yoxdur. Çıxış istənilən elementin (bu halda 0) massivdə olmadığını bildirir.

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.
  1. Massivlər haqqında bir şey - Massivlər haqqında yaxşı ətraflı məqalə

  2. Arrays sinfi və onun istifadəsi - məqalədə Array sinfinin bəzi üsulları təsvir edilmişdir

  3. Çoxölçülü massivlər - nümunələrlə çoxölçülü massivlər haqqında ətraflı məqalə.

  4. 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

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION