JavaRush /Java блогы /Random-KK /Java тіліндегі массивтер

Java тіліндегі массивтер

Топта жарияланған
Сақтау бөлмесіндегі ұяшықтарды елестетіңіз. Әрқайсысының өз нөмірі бар және олардың әрқайсысында қандай да бір «Багаж» нысаны бар. Немесе шарап тізімі, онда шараптың барлық түрлері нөмірленеді және тапсырыс бергенде сусынның нөмірін беру жеткілікті. Немесе бірінші ұяшыққа «Андреев» және соңғы ұяшыққа «Яковлев» жазылатын топтағы студенттердің тізімі. Немесе әрқайсысына белгілі бір нөмірмен орын тағайындалған ұшақ жолаушылардың тізімі. Java тілінде ұқсас құрылымдармен, яғни көптеген біртекті деректермен жұмыс істеу үшін Java тіліндегі массивтер жиі қолданылады.

Массив дегеніміз не?

Массив – бір типті элементтерді сақтайтын деректер құрылымы. Оны нөмірленген ұяшықтар жиынтығы ретінде қарастыруға болады, олардың әрқайсысында кейбір деректер болуы мүмкін (әр ұяшыққа бір деректер элементі). Белгілі бір ұяшыққа қол жеткізу оның нөмірі арқылы жүзеге асырылады. Массивтегі элемент нөмірін индекс деп те атайды . Java жағдайында массив біртекті, яғни оның барлық ұяшықтары бір типті элементтерді сақтайды. Сонымен, бүтін сандар массивінде тек бүтін сандар бар (мысалы, int типті ), жолдар массивінде тек жолдар бар, біз жасаған Dog класының элементтерінің массивінде тек Dog нысандары болады . Яғни, Java тілінде массивтің бірінші ұяшығына бүтін санды, екінші ұяшыққа Жолды және үшінші ұяшыққа «ит» қоя алмаймыз. Java тіліндегі массивтер

Массив декларациясы

Массивті қалай жариялауға болады?

Кез келген айнымалы сияқты, Java тіліндегі массив жариялануы керек. Мұны екі жолдың бірімен жасауға болады. Олар баламалы, бірақ біріншісі Java стиліне сәйкес келеді. Екіншісі - Си тілінің мұрасы (көптеген C бағдарламашылары Java тіліне ауысты, олардың ыңғайлылығы үшін балама әдіс қалдырылды). Кесте Java тілінде массив жариялаудың екі әдісін көрсетеді:
Жоқ. Массив декларациясы, Java синтаксисі Мысалдар Пікір
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
Массивті осылай жариялаған жөн, бұл Java стилі
2.
dataType arrayName[];
int myArray[];

Object
arrayOfObjects[];
Java тілінде де жұмыс істейтін C/C++ тілінен массивтерді жариялаудың мұраланған тәсілі
Екі жағдайда да dataType массивтегі айнымалылардың түрі болып табылады. Мысалдарда біз екі массив жарияладық. Біреуі int типті бүтін сандарды , екіншісі Object типті an objectілерді сақтайды . Осылайша, массив жарияланған кезде оның аты мен түрі (массив айнымалыларының түрі) болады. arrayName - массивтің аты.

Массив құру

Массивті қалай құруға болады?

Кез келген басқа нысан сияқты, сіз new операторының көмегімен Java массивін жасай аласыз, яғни ол үшін жад орнын сақтай аласыз . Бұл келесідей орындалады:
new typeOfArray [length];
Мұндағы typeOfArray - массивтің түрі, ал ұзындығы - оның ұзындығы (яғни, ұяшықтар саны), бүтін сандармен ( int ). Дегенмен, мұнда біз тек массив үшін жадты ғана бөлдік, бірақ жасалған массив бұрын жарияланған айнымалымен байланыстырылған жоқ. Әдетте массив алдымен жарияланады, содан кейін жасалады, мысалы:
int[] myArray; // array declaration
myArray = new int[10]; // creation, that is, allocation of memory for an array of 10 elements of type int
Мұнда біз myArray деп аталатын бүтін сандар массивін жариялап , оның 10 ұяшықтан тұратынын жарияладық (олардың әрқайсысы бүтін санды сақтайды). Дегенмен, бұл стенографиялық синтаксисті пайдаланып мәлімдемеден кейін массив жасау әлдеқайда жиі кездеседі:
int[] myArray = new int[10]; // declaration and allocation of memory "in one bottle"
Назар аударыңыз:new көмегімен массив жасағаннан кейін оның ұяшықтары әдепкі мәндермен толтырылады. Сандық түрлер үшін (біздің мысалдағыдай) бұл 0 болады, логикалық үшін - false , сілтеме түрлері үшін - null . Осылайша, операциядан кейін
int[] myArray = new int[10];
біз он бүтін саннан тұратын массив аламыз және бұл бағдарлама барысында өзгермейінше, әрбір ұяшықта 0 болады.

Java тіліндегі массив ұзындығы

Жоғарыда айтқанымыздай, массивтің ұзындығы - массив құрастырылған элементтердің саны. Массив жасалғаннан кейін оның ұзындығын өзгерту мүмкін емес. Назар аударыңыз:Java тілінде массив элементтері нөлден бастап нөмірленеді. Яғни, егер бізде 10 элементтен тұратын массив болса, онда массивтің бірінші элементінде 0 индексі, ал соңғысында 9 индексі болады. lengthJava тіліндегі массивтер - 3 айнымалысы арқылы массив ұзындығына қол жеткізуге болады . Мысалы:
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
Бағдарламаның шығуы:
10

Массивті инициализациялау және оның элементтеріне қол жеткізу

Java-да массивті қалай жасау керектігі қазірдің өзінде түсінікті. Бұл proceduresадан кейін біз бос массив емес, әдепкі мәндермен толтырылған массив аламыз. Мысалы, int жағдайында олар 0 болады және егер бізде сілтеме түріндегі деректері бар массив болса, әдепкі бойынша әрбір ұяшықта null жазылады . Біз массив элементіне (яғни оған мән жазамыз немесе оны экранда көрсетеміз немесе онымен қандай да бір операцияны орындаймыз) индексі бойынша қол жеткіземіз. Массивті инициализациялау оны нақты деректермен толтырады (әдепкі бойынша емес). Мысал: 4 мезгіл массивін жасап, оны жол мәндерімен толтырайық - осы маусымдардың атаулары.
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
Енді массивіміздің барлық төрт ұяшығында жыл мезгілдерінің атаулары бар. Инициализацияны инициализация мен декларацияны біріктіре отырып, басқаша жасауға болады:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Сонымен қатар, жаңа операторды алып тастауға болады:
String[] seasons  = {"Winter", "Spring", "Summer", "Autumn"};

Java тілінде массив экранда қалай көрсетіледі?

Массив элементтерін экранда (яғни консольде) көрсетуге болады, мысалы, for циклі арқылы . Массивті экранда көрсетудің тағы бір қысқа жолы төмендегі «Массивтермен жұмыс істеудің пайдалы әдістері» параграфында талқыланады.Қазір массивтің циклдік шығысы бар мысалды қарастырайық:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Нәтижесінде бағдарлама келесі нәтижені шығарады:
Қыс Көктем Жаз Күз

Бір өлшемді және көп өлшемді Java массивтері

Егер біз сандар массивін, жолдар массивін немесе кейбір нысандар массивін емес, массивтер массивін жасағымыз келсе ше? Java мұны істеуге мүмкіндік береді. Бұрыннан таныс массив int[] myArray = new int[8] бір өлшемді массив деп аталады. Ал массивтер массиві екі өлшемді деп аталады. Бұл жол нөмірі мен баған нөмірі бар кесте сияқты. Немесе, егер сіз матрицада сызықтық алгебраның басын үйренсеңіз. Java тіліндегі массивтер - 4Мұндай массивтер не үшін қажет? Атап айтқанда, бірдей матрицалар мен кестелерді, сондай-ақ құрылымы бойынша оларға ұқсас an objectілерді бағдарламалауға арналған. Мысалы, шахмат ойынының алаңын 8x8 массиві ретінде көрсетуге болады. Көпөлшемді массив келесідей жарияланады және жасалады:
int[][] myTwoDimentionalArray = new int [8][8];
Бұл массивте дәл 64 элемент бар: myTwoDimentionalArray[0][0], myTwoDimentionalArray[0][1], myTwoDimentionalArray[1][0], myTwoDimentionalArray[1][1]және т.б. дейін -ге дейін myTwoDimentionalArray[7][7]. Сонымен, егер біз оны шахмат тақтасын көрсету үшін қолданатын болсақ, онда A1 ұяшығы -ды myTwoDimentionalArray[0][0], ал E2-ні көрсетеді myTwoDimentionalArray[4][1]. Екі болған жерде үшеу бар. Java тілінде массивтер массивін... массивтер массивін және т.б. көрсетуге болады. Рас, үш өлшемді және одан да көп массивтер өте сирек қолданылады. Дегенмен, үш өлшемді массивтің көмегімен, мысалы, Рубик текшесін бағдарламалауға болады.

Тағы не оқу керек

Көпөлшемді массивтер

Массивтермен жұмыс істеудің пайдалы әдістері

Java тілінде массивтермен жұмыс істеу үшін java.util.Arrays класы бар (ағылшын тілінде массивтер «массив» дегенді білдіреді). Жалпы алғанда, массивтермен келесі операциялар жиі орындалады: элементтермен толтыру (инициализация), элементті алу (сан бойынша), сұрыптау және іздеу. Массивтерді іздеу және сұрыптау - бұл бөлек тақырып. Бір жағынан, бірнеше іздеу және сұрыптау алгоритмдерін өз бетіңізше жаттықтыру және жазу өте пайдалы. Екінші жағынан, барлық ең жақсы тәжірибелер жазылған және Java кітапханаларына енгізілген және оларды заңды түрде пайдалануға болады. Міне, осы сыныптың үш пайдалы әдісі

Массивті сұрыптау

Әдіс бүтін void sort(int[] myArray, int fromIndex, int toIndex)сандар массивін немесе оның ішкі жиымын өсу ретімен сұрыптайды.

Қажетті элемент үшін массив іздеу

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key). Бұл әдіс бұрыннан сұрыпталған myArray немесе ішкі жиымдағы негізгі элементті fromIndex- тен бастап және toIndex- ке дейін іздейді . Егер элемент табылса, әдіс оның индексін қайтарады, егер табылмаса - . (-fromIndex)-1

Массивті жолға түрлендіру

Әдіс String toString(int[] myArray)массивті жолға түрлендіреді. Мәселе мынада, Java массивтерінде toString() қайта анықталмайды . Бұл дегеніміз, егер сіз бүкіл массивті (« Экранға массив басып шығару » сияқты элемент бойынша элемент емес ) тікелей экранға ( System.out.println(myArray)) көрсетуге тырыссаңыз, сіз класс атауын және массивтің он алтылық хэш codeын аласыз. (бұл Object.toString() арқылы анықталады ). Егер сіз бастаушы болсаңыз, әдіс түсіндірмесін түсінбеуіңіз мүмкін toString. Бірінші кезеңде бұл қажет емес, бірақ бұл әдісті қолдану арқылы массивтің шығуы жеңілдетілген. Java циклді пайдаланбай массивті көрсетуді жеңілдетеді. Төмендегі мысалда бұл туралы толығырақ.

Сұрыптау, binarySearch және toString мысалдары

Бүтін сандар массивін құрайық, оны toString арқылы экранда көрсетейік , оны сұрыптау әдісі арқылы сұрыптап , одан қандай да бір санды табайық.
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

    }
}
Бағдарламаның шығуы:
[I@1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
Бірінші жол массивді toString қолданбасымен көрсету әрекеті , екіншісі toString көмегімен массивді көрсетеді , үшіншісі сұрыпталған массив, төртіншісі сұрыпталған массивтегі қажетті 5 санының индексі (біз санайтынымызды есте сақтаңыз). нөлге тең, сондықтан массивтің төртінші элементінде 3) индексі бар. Бесінші жолда біз -1 мәнін көреміз . Массивте мұндай индекс жоқ. Шығу қажетті элементтің (бұл жағдайда 0) массивте жоқ екендігі туралы сигнал береді.

Массив класының әдістері туралы толығырақ

Arrays класы және оны қолдану - мақалада Array класының кейбір әдістері сипатталған

Массивтер туралы ең бастысы

  • Массивтің негізгі сипаттамалары: онда орналастырылған деректер түрі, аты және ұзындығы.
    Соңғысы инициализация кезінде (массив үшін жадты бөлу) шешіледі, алғашқы екі параметр массивті жариялау кезінде анықталады.

  • Жиым өлшемі (ұяшықтар саны) int ішінде анықталуы керек

  • Жиым жасалғаннан кейін оның ұзындығын өзгерту мүмкін емес.

  • Жиым элементіне оның индексі арқылы қол жеткізуге болады.

  • Массивтерде, Java тіліндегі басқа жерде сияқты, элементтер нөлден бастап нөмірленеді.

  • Массив жасау proceduresасынан кейін ол әдепкі мәндермен толтырылады.

  • Java тіліндегі массивтер C++ тіліне қарағанда басқаша құрылымдалған. Олар динамикалық массивтерге арналған көрсеткіштермен дерлік бірдей.

Массивтер туралы пайдалы материалдар

Массивтер туралы көбірек білгіңіз келе ме? Төмендегі мақалаларға назар аударыңыз. Бұл тақырып бойынша көптеген қызықты және пайдалы ақпарат бар.
  1. Массивтер туралы бірдеңе - массивтер туралы жақсы егжей-тегжейлі мақала

  2. Arrays класы және оны қолдану - мақалада Array класының кейбір әдістері сипатталған

  3. Көпөлшемді массивтер – мысалдары бар көпөлшемді массивтер туралы егжей-тегжейлі мақала.

  4. Нөлдік емес, нөлдік ұзындықтағы массивді қайтарыңыз - Тиімді бағдарламалау авторы Джошуа Блох бос массивтерді қалай жақсы қайтару керектігі туралы айтады

Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION