JavaRush /Java блогу /Random-KY /Java тилиндеги массивдер

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

Группада жарыяланган
Кампадагы клеткаларды элестетиңиз. Ар биринин өзүнүн номери бар жана ар биринде кандайдыр бир "Багаж" an objectи бар. Же шараптын тизмеси, анда шараптын бардык түрлөрү номерленген жана заказ бергенде ичимдиктин номерин бериш керек. Же биринчи уячага «Андреев» жана акыркы уячага «Яковлев» жазыла турган тайпадагы студенттердин тизмеси. Же учактын жүргүнчүлөрүнүн тизмеси, алардын ар бирине белгилүү бир номер менен орун ыйгарылган. Java тorнде окшош структуралар менен иштөө үчүн, башкача айтканда, көптөгөн бир тектүү маалыматтар, Javaдагы массивдер көп колдонулат.

Массив деген эмне?

Массив – бир типтеги элементтерди сактаган маалымат структурасы. Аны номерленген уячалардын жыйындысы катары кароого болот, алардын ар бири кандайдыр бир маалыматтарды камтышы мүмкүн (ар бир клеткага бир маалымат элементи). Белгилүү бир клеткага кирүү анын номери аркылуу ишке ашырылат. Массивдеги элементтин саны дагы индекс деп аталат . Java учурда массив бир тектүү, башкача айтканда, анын бардык клеткалары бир типтеги элементтерди сактайт. Ошентип, бүтүн сандардын массиви бүтүн сандарды гана камтыйт (мисалы, int тибиндеги), саптардын массивинде саптар гана бар, биз түзгөн Dog классынын элементтеринин массивинде Dog an objectилери гана болот . Башкача айтканда, Java тorнде массивдин биринчи уячасына бүтүн санды, экинчисине сапты жана үчүнчүсүнө “итти” коё албайбыз. Java тorндеги массивдер

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

Массивди кантип жарыялоо керек?

Бардык өзгөрмөлөр сыяктуу эле, Javaдагы массив жарыяланышы керек. Сиз муну эки жолдун бири менен кыла аласыз. Алар эквиваленттүү, бирок биринчиси Java стorне көбүрөөк шайкеш келет. Экинчиси - Си тorнин мурасы (көптөгөн C программисттери Java тorне өтүшкөн жана алардын ыңгайлуулугу үчүн альтернативалуу ыкма калтырылган). Таблица Java'да массивди жарыялоонун эки жолун көрсөтөт:
Жок. Массив декларациясы, Java синтаксиси Мисалдар Комментарий
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
Массивди ушундай жол менен жарыялоо сунушталат, бул Java стor
2.
dataType arrayName[];
int myArray[];

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

Массив түзүү

Массивди кантип түзүү керек?

Башка 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 болот, логикалык үчүн - false , шилтеме түрлөрү үчүн - null . Ошентип, операциядан кийин
int[] myArray = new int[10];
биз он бүтүн сандан турган массив алабыз жана бул программанын жүрүшүндө өзгөрмөйүнчө, ар бир уяча 0дү камтыйт.

Java тorндеги массив узундугу

Жогоруда айтылгандай, массивдин узундугу массив иштелип чыккан элементтердин саны болуп саналат. Массив түзүлгөндөн кийин анын узундугун өзгөртүү мүмкүн эмес. Көңүл буруңуздар:Java тorнде массивдин элементтери нөлдөн баштап номерленет. Башкача айтканда, эгерде бизде 10 элементтен турган массив болсо, анда массивдин биринчи элементинде 0 индекси, ал эми акыркысында 9 индекси болот. Java тorндеги массивдер - 3Сиз массивдин узундугуна length variable аркылуу кире аласыз . Мисал:
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 тorнде массивди экранда кантип көрсөтүү керек?

Сиз массивдин элементтерин экранда (башкача айтканда, консолго) көрсөтө аласыз, мисалы, for циклин колдонуп . Массивди экранда көрсөтүүнүн дагы бир кыска жолу төмөндөгү “Масивдер менен иштөөнүн пайдалуу ыкмалары” абзацында каралат.Азыр массивдин циклдик чыгарылышынын мисалын карап көрөлү:
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] бир өлчөмдүү массив деп аталган. Ал эми массивдердин массивдери эки өлчөмдүү деп аталат. Бул сап номери жана мамыча номери бар tableга окшош. Же болбосо, сызыктуу алгебранын башталышын матрицадан үйрөнгөн болсоңуз. Javaдагы массивдер - 4Эмне үчүн мындай массивдер керек? Атап айтканда, ошол эле матрицаларды жана tableларды, ошондой эле түзүлүшү боюнча аларга окшош 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 тorнде массивдер менен иштөө үчүн java.util.Arrays классы бар (англис тorнде массивдер “массивдер” дегенди билдирет). Жалпысынан массивдер менен көбүнчө төмөнкү операциялар аткарылат: элементтер менен толтуруу (инициализация), элементти алуу (сан боюнча), сорттоо жана издөө. Массивдерди издөө жана сорттоо өзүнчө тема. Бир жагынан, бир нече издөө жана сорттоо алгоритмдерин өз алдынча үйрөнүү жана жазуу абдан пайдалуу. Башка жагынан алганда, бардык мыкты тажрыйбалар буга чейин жазылган жана 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() жокко чыгарылbyte . Бул бүт массивди (« Экранга Массивди басып чыгаруу » сыяктуу элемент боюнча эмес) түздөн-түз экранга көрсөтүүгө аракет кылсаңыз 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) массивде жок экендигин билдирет.

Array классынын ыкмалары жөнүндө көбүрөөк

Arrays классы жана аны колдонуу - макалада Array классынын кээ бир ыкмалары сүрөттөлөт

Массивдер жөнүндө негизги нерсе

  • Массивдин негизги мүнөздөмөлөрү: анда жайгаштырылган маалыматтардын түрү, аты жана узундугу.
    Акыркысы инициализация учурунда (массивге эстутум бөлүү) чечилет, алгачкы эки параметр массивди жарыялоодо аныкталат.

  • Массивдин өлчөмү (уячалардын саны) int менен аныкталышы керек

  • Массив түзүлгөндөн кийин анын узундугун өзгөртө албайсыз.

  • Массив элементине анын индекси аркылуу кирүүгө болот.

  • Массивдерде, Java тorнин башка жериндей эле, элементтер нөлдөн баштап номерленет.

  • Массивди түзүү proceduresасынан кийин ал демейки маанилер менен толтурулат.

  • Java тorндеги массивдер C++ тorне караганда башкача түзүлөт. Алар динамикалык массивдердин көрсөткүчтөрү менен дээрлик бирдей.

Массивдер жөнүндө пайдалуу материалдар

Массивдер жөнүндө көбүрөөк билгиңиз келеби? Сураныч, төмөндөгү макалаларды карап көрүңүз. Бул тема боюнча көптөгөн кызыктуу жана пайдалуу маалыматтар бар.
  1. Массивдер жөнүндө бир нерсе - Массивдер боюнча жакшы деталдаштырылган макала

  2. Arrays классы жана аны колдонуу - макалада Array классынын кээ бир ыкмалары сүрөттөлөт

  3. Көп өлчөмдүү массивдер - мисалдар менен көп өлчөмдүү массивдер жөнүндө кеңири макала.

  4. Нөл эмес, нөл узундуктагы массивди кайтарыңыз - Натыйжалуу программалоонун автору Жошуа Блох бош массивдерди кантип жакшыраак кайтаруу керектиги жөнүндө айтат

Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION