Массив дегеніміз не?
Массив – бір типті элементтерді сақтайтын деректер құрылымы. Оны нөмірленген ұяшықтар жиынтығы ретінде қарастыруға болады, олардың әрқайсысында кейбір деректер болуы мүмкін (әр ұяшыққа бір деректер элементі). Белгілі бір ұяшыққа қол жеткізу оның нөмірі арқылы жүзеге асырылады. Массивтегі элемент нөмірін индекс деп те атайды . Java жағдайында массив біртекті, яғни оның барлық ұяшықтары бір типті элементтерді сақтайды. Сонымен, бүтін сандар массивінде тек бүтін сандар бар (мысалы, int типті ), жолдар массивінде тек жолдар бар, біз жасаған Dog класының элементтерінің массивінде тек Dog нысандары болады . Яғни, Java тілінде массивтің бірінші ұяшығына бүтін санды, екінші ұяшыққа Жолды және үшінші ұяшыққа «ит» қоя алмаймыз.Массив декларациясы
Массивті қалай жариялауға болады?
Кез келген айнымалы сияқты, Java тіліндегі массив жариялануы керек. Мұны екі жолдың бірімен жасауға болады. Олар баламалы, бірақ біріншісі Java стиліне сәйкес келеді. Екіншісі - Си тілінің мұрасы (көптеген C бағдарламашылары Java тіліне ауысты, олардың ыңғайлылығы үшін балама әдіс қалдырылды). Кесте Java тілінде массив жариялаудың екі әдісін көрсетеді:Жоқ. | Массив декларациясы, Java синтаксисі | Мысалдар | Пікір |
---|---|---|---|
1. |
|
|
Массивті осылай жариялаған жөн, бұл Java стилі |
2. |
|
|
Java тілінде де жұмыс істейтін C/C++ тілінен массивтерді жариялаудың мұраланған тәсілі |
Массив құру
Массивті қалай құруға болады?
Кез келген басқа нысан сияқты, сіз 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 индексі болады. length айнымалысы арқылы массив ұзындығына қол жеткізуге болады . Мысалы: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
Бағдарламаның шығуы:
Массивті инициализациялау және оның элементтеріне қол жеткізу
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] бір өлшемді массив деп аталады. Ал массивтер массиві екі өлшемді деп аталады. Бұл жол нөмірі мен баған нөмірі бар кесте сияқты. Немесе, егер сіз матрицада сызықтық алгебраның басын үйренсеңіз. Мұндай массивтер не үшін қажет? Атап айтқанда, бірдей матрицалар мен кестелерді, сондай-ақ құрылымы бойынша оларға ұқсас 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 кітапханаларына енгізілген және оларды заңды түрде пайдалануға болады.
Іздеуге және сұрыптауға арналған мақалалар: Теорияда және практикада сұрыптау алгоритмдері Java тілінде көпіршікті сұрыптауды енгізу CS50 курсында сұрыптау және іздеу: Сұрыптау алгоритмдері. Көпіршікті сұрыптау |
Массивті сұрыптау
Әдіс бүтін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
}
}
Бағдарламаның шығуы:
Массив класының әдістері туралы толығырақ Arrays класы және оны қолдану - мақалада Array класының кейбір әдістері сипатталған |
Массивтер туралы ең бастысы
-
Массивтің негізгі сипаттамалары: онда орналастырылған деректер түрі, аты және ұзындығы.
Соңғысы инициализация кезінде (массив үшін жадты бөлу) шешіледі, алғашқы екі параметр массивті жариялау кезінде анықталады. -
Жиым өлшемі (ұяшықтар саны) int ішінде анықталуы керек
-
Жиым жасалғаннан кейін оның ұзындығын өзгерту мүмкін емес.
-
Жиым элементіне оның индексі арқылы қол жеткізуге болады.
-
Массивтерде, Java тіліндегі басқа жерде сияқты, элементтер нөлден бастап нөмірленеді.
-
Массив жасау proceduresасынан кейін ол әдепкі мәндермен толтырылады.
-
Java тіліндегі массивтер C++ тіліне қарағанда басқаша құрылымдалған. Олар динамикалық массивтерге арналған көрсеткіштермен дерлік бірдей.
Массивтер туралы пайдалы материалдар
Массивтер туралы көбірек білгіңіз келе ме? Төмендегі мақалаларға назар аударыңыз. Бұл тақырып бойынша көптеген қызықты және пайдалы ақпарат бар.-
Массивтер туралы бірдеңе - массивтер туралы жақсы егжей-тегжейлі мақала
-
Arrays класы және оны қолдану - мақалада Array класының кейбір әдістері сипатталған
-
Көпөлшемді массивтер – мысалдары бар көпөлшемді массивтер туралы егжей-тегжейлі мақала.
-
Нөлдік емес, нөлдік ұзындықтағы массивді қайтарыңыз - Тиімді бағдарламалау авторы Джошуа Блох бос массивтерді қалай жақсы қайтару керектігі туралы айтады
GO TO FULL VERSION