Loading...

Көптүктөр (Массив)

 

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

data_type массивдин_аты[];

// же

data_type[] массив_аты;

Мисалы, сандардын массивин аныктайлы:

int nums[];

int[] nums2;

Массивди жарыялагандан кийин, биз аны инициализациялай алабыз:

int nums[];

nums = new int[4];  // 4 сандан турган массив

Массив төмөнкү конструкциянын жардамы менен түзүлөт: new data_type[элементтердин_саны], мында new - кашаада көрсөтүлгөн элементтердин санына эстутумду бөлгөн ачкыч сөз. Мисалы, nums = new int[4]; - бул туюнтма төрт int элементтен турган массивди түзөт жана ар бир элемент демейки мааниге ээ болот - 0 саны.

 

Сиз ошондой эле массивди жарыялоодо дароо инициализациялай аласыз:

int nums[] = new int[4];    // 4 сандан турган массив

int[] nums2 = new int[5];   // 5 сандан турган массив

Бул инициализация менен массивдин бардык элементтери демейки мааниге ээ. Сандык типтер үчүн (анын ичинде char түрү) бул 0 саны, логикалык тип үчүн бул жалган, ал эми башка объекттер үчүн бул нөл. Мисалы, int түрү үчүн демейки маани 0 саны, ошондуктан жогоруда аныкталган nums массиви төрт нөлдөн турат.

 

Бирок, массив түзүлгөндө анын элементтери үчүн конкреттүү маанилерди коюуга болот:

// бул эки ыкма эквиваленттүү

int[] nums = new int[] { 1, 2, 3, 5 };

int[] nums2 = { 1, 2, 3, 5 };

Белгилей кетсек, бул учурда массивдин өлчөмү чарчы кашаанын ичинде көрсөтүлбөйт, анткени ал тармал кашаадагы элементтердин саны менен эсептелет.

 

Массивди түзгөндөн кийин анын каалаган элементине индекс боюнча кайрыла алабыз, ал массивдин өзгөрмөсүнүн атынан кийин чарчы кашаага берилет:

int[] nums = new int[4];

// массив элементтеринин маанилерин коюу

nums[0] = 1;

nums[1] = 2;

nums[2] = 4;

nums[3] = 100;

        

// массивдин үчүнчү элементинин маанисин алуу

System.out.println(nums[2]);    // 4

Массивди индекстөө 0дөн башталат, ошондуктан бул учурда массивдин төртүнчү элементине кайрылуу үчүн nums[3] туюнтмасын колдонуу керек.

 

Жана биздин массив 4 элемент үчүн гана аныкталгандыктан, биз, мисалы, алтынчы элементке кайрыла албайбыз: nums[5] = 5;. Эгер биз аракет кылсак, ката алабыз.

 

Массив узундугу

Массивдердин эң маанилүү касиети - массивдин узундугун, башкача айтканда, анын элементтеринин санын кайтарып берүүчү узундук касиети:

 int[] nums = {1, 2, 3, 4, 5};

int length = nums.length;   // 5

Акыркы индекстин белгисиз болушу сейрек эмес жана массивдин акыркы элементин алуу үчүн биз бул касиетти колдоно алабыз:

int last = nums[nums.length-1];

Көп өлчөмдүү массивдер

Мурда биз бир өлчөмдүү массивдерди карап чыктык, алар чынжыр же бир эле типтеги маанилердин саптары катары көрсөтүлүшү мүмкүн. Бирок бир өлчөмдүү массивдерден тышкары көп өлчөмдүү массивдер да бар. Эң белгилүү көп өлчөмдүү массив бул эки өлчөмдүү массивди көрсөткөн таблица:

int[] nums1 = new int[] { 0, 1, 2, 3, 4, 5 };

 

int[][] nums2 = { { 0, 1, 2 }, { 3, 4, 5 } };

Визуалдык түрдө эки массив тең төмөнкүчө чагылдырылышы мүмкүн:

 

 

 

 

 

Бир өлчөмдүү массив nums1

Эки өлчөмдүү массив nums2

nums2 массиви эки өлчөмдүү болгондуктан, бул жөнөкөй таблица. Ал ошондой эле мындай түзүлүшү мүмкүн: int[][] nums2 = new int[2][3];. Чарчы кашаалардын саны массивдин өлчөмүн көрсөтөт. Ал эми кашаадагы сандар - саптардын жана мамычалардын саны. Ошондой эле, индекстерди колдонуу менен, биз программада массивдин элементтерин колдоно алабыз:

// экинчи катардын биринчи мамычасынын элементин коюңуз

nums2[1][0]=44;

System.out.println(nums2[1][0]);

Үч өлчөмдүү массивдин декларациясы төмөнкүдөй болушу мүмкүн:

int[][][] nums3 = new int[2][3][4];

Зубчатый массив

Көп өлчөмдүү массивдерди "керектүү массивдер" катары да көрсөтсө болот. Жогорудагы мисалда эки өлчөмдүү массивде 2 сап жана үч тилке бар болчу, ошондуктан биз жалпак таблицага ээ болдук. Бирок биз эки өлчөмдүү массивдин ар бир элементине ар кандай элементтердин саны менен өзүнчө массивди дайындай алабыз:

int[][] nums = new int[3][];

nums[0] = new int[2];

nums[1] = new int[3];

nums[2] = new int[5];

foreach

For циклинин атайын версиясы foreach массивдер жана коллекциялар сыяктуу элементтер топтомундагы элементтерди кайталоо үчүн иштелип чыккан. Бул башка программалоо тилдеринде табылган foreach циклине окшош. Расмий декларация:

for (берилиштердин_түрүнүн өзгөрмөнүн_аты: контейнер){

    // иш аракет

}

Мисалы:

int[] array = new int[] { 1, 2, 3, 4, 5 };

for (int i : array){

            

    System.out.println(i);

}

Бул учурда контейнер int тибиндеги маалыматтар массиви болуп саналат. Андан кийин өзгөрмө int түрү менен жарыяланат

 

Ушундай эле нерсени forтун кадимки версиясы менен жасоого болот:

int[] array = new int[] { 1, 2, 3, 4, 5 };

for (int i = 0; i < array.length; i++){

    System.out.println(array[i]);

}

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

int[] array = new int[] { 1, 2, 3, 4, 5 };

for (int i=0; i<array.length;i++){

    array[i] = array[i] * 2;

    System.out.println(array[i]);

}

Циклдеги көп өлчөмдүү массивдерди итерациялоо

int[][] nums = new int[][]

{

    {1, 2, 3},

    {4, 5, 6},

    {7, 8, 9}

};

for (int i = 0; i < nums.length; i++){

    for(int j=0; j < nums[i].length; j++){

            

        System.out.printf("%d ", nums[i][j]);

    }

    System.out.println();

}

Биринчиден, цикл саптарды кайталоо үчүн түзүлөт, андан кийин биринчи циклдин ичинде белгилүү бир катардын мамычаларын кайталоо үчүн ички цикл түзүлөт. Ошо сыяктуу эле, сиз көп өлчөмдөгү үч өлчөмдүү массивдерди жана топтомдорду кайталай аласыз.