JavaRush /Java Blog /Random-TK /Java-da massiwler

Java-da massiwler

Toparda çap edildi
Saklaýyş otagynda öýjükleri göz öňüne getiriň. Hersiniň öz nomeri bar we hersinde haýsydyr bir “goşlar” obýekti bar. Ora-da şerabyň ähli görnüşleri sanalýan we sargyt bereniňizde, içginiň sanyny bermeli bolarsyňyz. Ora-da birinji öýjükde “Andreýew”, soňky kamerada “ovakowlew” ýazyljak topardaky okuwçylaryň sanawy. Ora-da hersine belli bir nomerli oturgyç berlen uçar ýolagçylarynyň sanawy. Java-da şuňa meňzeş gurluşlar bilen işlemek üçin, ýagny birmeňzeş maglumatlar, Java-da massiwler köplenç ulanylýar.

Bir massiw näme?

Bir massiw, şol bir görnüşdäki elementleri saklaýan maglumat gurluşydyr. Her birinde käbir maglumatlary (öýjük üçin bir maglumat elementi) saklap bilýän sanly öýjükleriň toplumy diýip pikir edip bolar. Belli bir öýjüge girmek, onuň belgisi arkaly amala aşyrylýar. Bir massiwdäki elementiň sanyna indeks hem diýilýär . “Java” ýagdaýynda massiw birmeňzeş, ýagny ähli öýjükleri birmeňzeş görnüşdäki elementleri saklar. Şeýlelik bilen, bitewi sanlar toplumynda diňe bitewi sanlar bar (mysal üçin int görnüşi), setirleriň hatarynda diňe setirler bar, döreden It synpymyzyň elementlerinde diňe It obýektleri bar . Javaagny, Java-da massiwiň birinji öýjügine bitewi san, ikinjisinde setir we üçünjisinde “it” goýup bilmeris. Java-da massiwler

Array Deklarasiýasy

Bir massiw nädip yglan edilmeli?

Islendik üýtgeýji ýaly, Java-da bir massiw yglan edilmeli. Muny iki usulyň birinde edip bilersiňiz. Olar deňdir, ýöne birinjisi Java stiline has laýyk gelýär. Ikinjisi, C diliniň mirasy (köp C programmist Java-a geçdi we amatly bolmagy üçin başga bir usul galdy). Tablisa Java-da massiw yglan etmegiň iki usulyny görkezýär:
No.ok. Array deklarasiýasy, Java sintaksis Mysallar Teswir
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
Bu görnüşde bir massiw yglan etmek maslahat berilýär, bu Java stili
2.
dataType arrayName[];
int myArray[];

Object
arrayOfObjects[];
Java-da işleýän C / C ++ -dan massiwleri yglan etmegiň miras galan usuly
Iki ýagdaýda-da “DataType” massiwdäki üýtgeýänleriň görnüşidir. Mysallarda iki sany massiw yglan etdik. Biri int görnüşiniň bitewi sanlaryny , beýlekisi Obýekt görnüşindäki zatlary saklar . Şeýlelik bilen, bir massiw yglan edilende, onuň ady we görnüşi bar (massiw üýtgeýänleriň görnüşi). arrayName - bu massiwiň ady.

Array döretmek

Bir massiw nädip döretmeli?

Beýleki obýektler ýaly Java massiwini döredip bilersiňiz, ýagny täze operatory ulanyp, onuň üçin ýat ýerini ätiýaçlandyryp bilersiňiz . Bu şeýle edilýär:
new typeOfArray [length];
“TypeOfArray” massiwiň görnüşi, uzynlygy bolsa bitewi ( int ) bilen aňladylýan uzynlygy (ýagny öýjükleriň sany) . Şeýle-de bolsa, bu ýerde diňe massiw üçin ýady bölüp berdik, ýöne döredilen massiwi öň yglan edilen üýtgeýji bilen baglanyşdyrmadyk. Adatça bir massiw ilki yglan edilýär we soňra döredilýär, mysal üçin:
int[] myArray; // array declaration
myArray = new int[10]; // creation, that is, allocation of memory for an array of 10 elements of type int
Bu ýerde myArray atly bitewi sanlar toplumyny yglan etdik , soň bolsa 10 öýjükden ybaratdygyny yglan etdik (olaryň her biri bitewi san saklar). Şeýle-de bolsa, bu stenografiýa sintaksisini ulanyp, deklarasiýadan soň derrew bir massiw döretmek has adatydyr:
int[] myArray = new int[10]; // declaration and allocation of memory "in one bottle"
Bellik:Täze ulanyp, massiw döredilenden soň , öýjükleri başlangyç bahalar bilen doldurylýar. San görnüşleri üçin (mysalymyzdaky ýaly) 0 bolar, boolean - ýalan , salgylanma görnüşleri üçin - null . Şeýlelik bilen, operasiýadan soň
int[] myArray = new int[10];
on sany bitewi san alarys we programma wagtynda bu üýtgeýänçä, her öýjükde 0 bolýar.

Java-da massiwiň uzynlygy

Aboveokarda aýdyşymyz ýaly, bir massiwiň uzynlygy, massiw üçin düzülen elementleriň sanydyr. Bir massiwiň uzynlygy döredilenden soň üýtgedilip bilinmez. Bellik:Java-da massiw elementleri noldan başlaýar. .Agny, bizde 10 elementden ybarat massiw bar bolsa, onda massiwiň birinji elementinde 0 indeks, iň soňkusynda bolsa 9 görkeziji bolar. UzynlykJava-da massiwler - 3 üýtgeýjisini ulanyp, massiwiň uzynlygyna girip bilersiňiz . Mysal:
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
Programmanyň çykyşy:
10

Bir massiw başlamak we onuň elementlerine girmek

Java-da nädip massiw döretmelidigi eýýäm düşnüklidir. Bu amaldan soň boş massiw almarys, ýöne başlangyç bahalar bilen doldurylan bir massiw. Mysal üçin, int ýagdaýynda 0 bolar, eger-de salgylanma görnüşindäki maglumatlar bilen massiwimiz bar bolsa, her öýjükde adaty ýagdaýda null ýazylýar . Indeks boýunça bir massiw elementine girýäris (ýagny, oňa baha ýazýarys ýa-da ekranda görkezýäris ýa-da onuň bilen haýsydyr bir amal edýäris). Bir massiwiň başlangyjy ony belli bir maglumat bilen doldurýar (deslapky däl). Mysal: geliň, 4 möwsüm massiwini döredeliň we ony setir bahalary bilen dolduralyň - bu möwsümleriň atlary.
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
Indi massiwimiziň dört öýjüginiň hemmesinde pasyllaryň atlary bar. Başlangyjy we deklarasiýany birleşdirip, başgaça edip bolýar:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Mundan başga-da, täze operatory taşlap bolar:
String[] seasons  = {"Winter", "Spring", "Summer", "Autumn"};

Java-da bir massiwi ekranda nädip görkezmeli?

Ekranda massiw elementlerini görkezip bilersiňiz (ýagny konsola), meselem, aýlaw üçin . Ekranda massiw görkezmegiň başga bir gysga usuly, aşakdaky “Toplumlar bilen işlemegiň peýdaly usullary” abzasynda ara alnyp maslahatlaşylar. Häzirlikçe, bir massiwiň aýlawly çykyşy bilen bir meselä seredeliň:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Netijede, programma aşakdaky netijäni berer:
Gyş bahary tomus güýz

Bir ölçegli we köp ölçegli Java massiwleri

Sanlar toplumyny, setirler toplumyny ýa-da käbir obýektleriň massiwini däl-de, eýsem bir topar massiw döretmek islesek näme etmeli? Java muny etmäge mümkinçilik berýär. Eýýäm tanyş int [] myArray = new int [8] bir ölçegli massiw diýilýär. Bir topar massiw iki ölçegli diýilýär. Bu hatar belgisi we sütün belgisi bolan tablisa meňzeýär. Ora-da çyzykly algebranyň başlangyçlaryny, matrisada öwrenen bolsaňyz. Java-da massiwler - 4Näme üçin şeýle massiwler gerek? Hususan-da, birmeňzeş matrisalary we tablisalary, şeýle hem gurluşyna meňzeýän zatlary programmirlemek üçin. Mysal üçin, küşt üçin oýun meýdançasyny 8x8 massiw hökmünde kesgitläp bolýar. Köp ölçegli massiw aşakdaky ýaly yglan edilýär we döredilýär:
int[][] myTwoDimentionalArray = new int [8][8];
Bu massiwde takmynan 64 element bar : myTwoDimentionalArray[0][0],, we ş.m. Şeýlelik bilen, küşt tagtasyny görkezmek üçin ulansak, A1 öýjügi , E2 öýjük görkezer . Iki ýerde, üç ýerde bar. Java-da, bir topar massiw görkezip bilersiňiz ... massiwleriň massiwini we ş.m. Dogry, üç ölçegli we has köp massiw seýrek ulanylýar. Şeýle-de bolsa, üç ölçegli massiw ulanyp, meselem, Rubigiň kubyny programma edip bilersiňiz. myTwoDimentionalArray[0][1]myTwoDimentionalArray[1][0]myTwoDimentionalArray[1][1]myTwoDimentionalArray[7][7]myTwoDimentionalArray[0][0]myTwoDimentionalArray[4][1]

Başga näme okamaly

Köp ölçegli massiwler

Toplumlar bilen işlemek üçin peýdaly usullar

Java-da massiwler bilen işlemek üçin java.util.Arrays synpy bar (iňlis dilinde massiwler “massiwler” diýmekdir). Umuman alanyňda, aşakdaky amallar köplenç massiwler bilen ýerine ýetirilýär: elementleri doldurmak (başlangyç), bir elementi almak (san boýunça), sortlamak we gözlemek. Toplumlary gözlemek we tertiplemek aýratyn mowzuk. Bir tarapdan, birnäçe gözleg we sortlaşdyryş algoritmini özüňiz ýazmak we ýazmak gaty peýdaly. Beýleki tarapdan, iň oňat tejribeler eýýäm ýazylyp, Java kitaphanalaryna girizildi we kanuny taýdan ulanylyp bilner. Ine, bu synpyň üç peýdaly usuly

Bir massiw düzüň

Bu usul void sort(int[] myArray, int fromIndex, int toIndex)bitewi sanlary ýa-da onuň aşaky gatlagyny ýokarlanýan tertipde tertipleýär.

Islenýän element üçin massiw gözlemek

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key). Bu usul, eýýäm tertiplenen myArray ýa-da subarray- da esasy elementi , Indeks- den başlap, Indeks- e çenli gözleýär . Eger element tapylsa, usul indeksini yzyna gaýtaryp berýär, ýok bolsa - . (-fromIndex)-1

Bir massiwi setire öwürmek

Usul String toString(int[] myArray)massiwini setire öwürýär. Javaagny, Java massiwlerindeString () -e geçmeli däl . Diýmek, ähli massiwi (element boýunça element däl-de, “ Ekrana çap etmek ” ýaly) elementi gönüden-göni ekrana görkezmäge synanyşsaňyz System.out.println(myArray), synpyň adyny we massiwiň on alty ölçegli hash koduny alarsyňyz. (bu Object.toString () bilen kesgitlenýär ). Bir öwrenje bolsaňyz, usulyň düşündirişine düşünip bilmersiňiz toString. Birinji etapda bu zerur däl, ýöne bu usuly ulanmak bilen massiwiň çykyşy ýönekeýleşdirilýär. Java, aýlaw ulanman bir massiw görkezmegi aňsatlaşdyrýar. Bu barada has aşakdaky mysalda.

Sort, ikilik gözleg we toString boýunça mysal

Geliň, bitewi sanlary döredeliň, toString ulanyp ekranda görkezeliň , sort usuly bilen tertipläň we ondan san tapalyň.
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

    }
}
Programmanyň çykyşy:
[I @ 1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
Birinji setir, toString bolmazdan bir massiw görkezmek synanyşygy , ikinjisi toString ulanyp bir massiw görkezýär , üçünjisi tertipleşdirilen massiw, dördünjisi tertipli massiwde islenýän 5 belginiň görkezijisidir (hasaplaýandygymyzy ýadyňyzdan çykarmaň) nol, şonuň üçin massiwiň dördünji elementinde 3 indeks bar). Bäşinji setirde -1 bahasyny görýäris . Bir massiwde beýle görkeziji ýok. Çykyş, islenýän elementiň (bu ýagdaýda 0) massiwde däldigini görkezýär.

Array synp usullary barada has giňişleýin

“Arrays” synpy we ulanylyşy - makalada “Array” synpynyň käbir usullary beýan edilýär

Toplumlar barada esasy zat

  • Bir massiwiň esasy aýratynlyklary: oňa ýerleşdirilen maglumatlaryň görnüşi, ady we uzynlygy.
    Ikinjisi başlangyç wagtynda (massiw üçin ýady bölmek) çözülýär, massiw yglan edilende ilkinji iki parametr kesgitlenýär.

  • Toplumyň ululygy (öýjükleriň sany) int -de kesgitlenmeli

  • Bir massiw döredilenden soň üýtgedip bilmersiňiz.

  • Bir massiw elementine indeks arkaly girip bolýar.

  • Javaawanyň beýleki ýerlerindäki ýaly massiwlerde elementler noldan başlaýar.

  • Toplum döretmek prosedurasyndan soň, başlangyç bahalar bilen doldurylýar.

  • Java-daky massiwler C ++ bilen deňeşdirilende başgaça düzülendir. Dinamiki massiwlere görkezijiler bilen deňdir.

Toplumlar barada peýdaly materiallar

Toplumlar barada has giňişleýin bilesiňiz gelýärmi? Aşakdaky makalalara göz aýlaň. Bu mowzukda köp gyzykly we peýdaly maglumatlar bar.
  1. Toplumlar barada bir zat - massiwler barada gowy jikme-jik makala

  2. “Arrays” synpy we ulanylyşy - makalada “ Array” synpynyň käbir usullary beýan edilýär

  3. Köp ölçegli massiwler - mysallar bilen köp ölçegli massiwler barada jikme-jik makala.

  4. Nol däl uzynlykdaky massiwini yzyna gaýtaryň - Netijeli programmirleme ýazyjysy Joşua Bloch boş massiwleri nädip has gowy yzyna gaýtarmalydygy barada gürleýär

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