Массив чист?
Массив сохтори додаҳоест, ки унсурҳои як навъро нигоҳ медорад. Онро метавон ҳамчун маҷмӯи ячейкаҳои рақамгузоришуда баррасӣ кард, ки ҳар кадоми онҳо метавонанд дорои баъзе маълумотҳо бошанд (як элементи маълумот дар як ҳуҷайра). Дастрасӣ ба ячейкаи мушаххас тавассути рақами он сурат мегирад. Шумораи элемент дар массив инчунин индекс номида мешавад . Дар мавриди Java, массив якхела аст, яъне ҳамаи ячейкаҳои он элементҳои як навъро нигоҳ медоранд. Ҳамин тавр, массиви ададҳо танҳо ададҳои бутунро дар бар мегирад (масалан, навъи int ), массиви сатрҳо танҳо сатрҳоро дар бар мегирад, массиви элементҳои синфи Dog , ки мо офаридаем, танҳо an objectҳои Dog -ро дар бар мегирад . Яъне, дар Java мо наметавонем адади бутунро дар ячейкаи якуми массив, Сатрро дар дуюм ва "саг" дар сеюм ҷойгир кунем.Эъломияи массив
Массивро чӣ гуна эълон кардан мумкин аст?
Мисли ҳама гуна тағирёбанда, массив дар Java бояд эълон карда шавад. Шумо метавонед инро бо яке аз ду роҳ анҷом диҳед. Онҳо баробаранд, аммо аввалинаш бо услуби Java мувофиқтар аст. Дуюм мероси забони Си мебошад (бисёр барномасозони Си ба Java гузаштанд ва барои роҳати онҳо усули алтернативӣ боқӣ мондааст). Ҷадвал ҳарду роҳи эълон кардани массивро дар Java нишон медиҳад:Не. | Эъломияи массив, синтаксиси Java | Мисолхо | Шарҳ |
---|---|---|---|
1. |
|
|
Тавсия дода мешавад, ки массивро бо ин роҳ эълон кунед, ин услуби Java аст |
2. |
|
|
Усули мероси эълон кардани массивҳо аз C/C++, ки дар Java низ кор мекунад |
Эҷоди массив
Массивро чӣ гуна бояд сохт?
Мисли ҳама гуна an objectи дигар, шумо метавонед бо истифода аз оператори нав массиви 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 хоҳад буд, барои boolean - 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 аллакай равшан аст. Пас аз ин тартиб, мо на массиви холӣ мегирем, балки массиви пур аз арзишҳои пешфарз. Масалан, дар ҳолати int , инҳо 0 хоҳанд буд ва агар мо массиви дорои маълумоти навъи истинод дошта бошем, пас ба таври нобаёнӣ дар ҳар як чашмак нул навишта мешавад . Мо ба элементи массив (яъне мо ба он арзиш менависем ё онро дар экран нишон медиҳем ё ягон амалиётро бо он иҷро мекунем) аз рӯи индексаш дастрас мешавем. Оғоз кардани массив пур кардани он бо маълумоти мушаххас аст (на ба таври нобаёнӣ). Мисол: биёед массиви 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 loop . Роҳи дигари кӯтоҳтари намоиши массив дар экран дар параграфи "Усулҳои муфид барои кор бо массивҳо" дар зер баррасӣ хоҳад шуд.. Ҳоло биёед як мисолро бо баромади даврии массив дида бароем:String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Дар натиҷа, барнома натиҷаи зеринро медиҳад:
Массивҳои якченака ва бисёрченакаи Java
Чӣ бояд кард, агар мо на массиви ададҳо, массиви сатрҳо ё массиви баъзе an objectҳо, балки массиви массивҳоро эҷод кунем? 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 ё зермавсими аллакай мураттабшуда ҷустуҷӯ мекунад , аз Index сар карда, то ба toIndex . Агар элемент ёфт шавад, усул индекси худро бармегардонад, агар не - . (-fromIndex)-1
Табдил додани массив ба сатр
УсулString toString(int[] myArray)
массивро ба сатр табдил медиҳад. Гап дар он аст, ки дар массивҳои Java toString() -ро бекор намекунанд . Ин маънои онро дорад, ки агар шумо кӯшиш кунед, ки тамоми массивро (ба ҷои элемент ба унсур, ба мисли " Чашидани массив ба экран ") мустақиман ба экран ( System.out.println(myArray)
), нишон диҳед, шумо номи синф ва codeи хэш-шонздаҳии массивро хоҳед гирифт. (инро Object.toString() муайян мекунад ). Агар шумо навкор бошед, шумо метавонед шарҳи усулро нафаҳмед toString
. Дар марҳилаи аввал ин шарт нест, аммо бо истифода аз ин усул баромади массив содда карда мешавад. Java намоиши массивро бе истифодаи ҳалқа осон мекунад. Бештар дар бораи ин дар мисоли зер.
Намуна оид ба навъ, binarySearch ва toString
Биёед массиви ададҳоро эҷод кунем, онро бо истифода аз toString дар экран нишон диҳем , онро бо усули sort ҷудо кунем ва дар он рақамеро пайдо кунем.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
}
}
Натиҷаи барнома:
Бештар дар бораи усулҳои синфи Array Синфи Arrays ва истифодаи он - мақола баъзе усулҳои синфи Arrayро тавсиф мекунад |
Чизи асосӣ дар бораи массивҳо
-
Хусусиятҳои асосии массив: намуди додаҳои дар он ҷойгиршуда, ном ва дарозӣ.
Охирин ҳангоми оғозёбӣ (тақсим кардани хотира барои массив) муайян карда мешавад, ду параметри аввал ҳангоми эълони массив муайян карда мешаванд. -
Андозаи массив (шумораи ҳуҷайраҳо) бояд дар int муайян карда шавад
-
Шумо наметавонед дарозии массивро пас аз сохтани он тағир диҳед.
-
Ба унсури массив тавассути индекси он дастрас шудан мумкин аст.
-
Дар массивҳо, мисли дигар ҷойҳо дар Java, элементҳо аз сифр сар карда рақамгузорӣ карда мешаванд.
-
Пас аз тартиби эҷоди массив, он бо арзишҳои пешфарз пур карда мешавад.
-
Массивҳо дар Java нисбат ба C++ ба таври дигар сохта шудаанд. Онҳо тақрибан ба нишондиҳандаҳои массивҳои динамикӣ монанданд.
Маводҳои муфид дар бораи массивҳо
Мехоҳед дар бораи массивҳо маълумоти бештар гиред? Лутфан ба мақолаҳои зер нигаред. Дар ин мавзӯъ бисёр маълумоти ҷолиб ва муфид вуҷуд дорад.-
Чизе дар бораи массивҳо - Мақолаи хуб дар бораи массивҳо
-
Синфи Arrays ва истифодаи он - мақола баъзе усулҳои синфи Arrayро тавсиф мекунад
-
Массивҳои бисёрченака - мақолаи муфассал дар бораи массивҳои бисёрченака бо мисолҳо.
-
Массиви дарозии сифрро баргардонед, на нул - Муаллифи барномасозии муассир Ҷошуа Блох дар бораи чӣ гуна беҳтар баргардонидани массивҳои холӣ нақл мекунад
GO TO FULL VERSION