Масив (англ. array) являє собою потужний інструмент, що дозволяє працювати з великою кількістю даних. Очевидно, що якщо вам в процесі роботи вашого коду десь потрібно зберегти, наприклад, 100 значень, то робити для цього таку ж кількість змінних як мінімум нерозумно. Масив дозволяє зберігати велику кількість значень під одним ім'ям і звертатися до них за відповідним індексом. Поняття масивів є наріжним каменем у вивченні курсу Java для початківців. Адже вони є основою для багатьох структур даних.
Оскільки Java це, перш за все, ООП, попорівняно з масивами в інших мовах програмування java array має одну відмінну рису - вони представляються у вигляді об'єктів. Крім інших переваг, це позбавляє від потреби стежити за очищенням пам'яті, оскільки вона звільняється автоматично.
Одновимірна масив представляється собоюкласичний Java array і є сукупністю пов'язаних загальним ім'ям елементів, кожному з яких відповідає певний індекс. Спосіб оголошення масиву наведено на малюнку нижче.
Спочатку оголошується тип Java array, якийвизначає тип значень, що зберігаються в ньому. Це може бути будь-який допустимий в Java тип даних. Далі йдуть ім'я масиву і квадратні дужки, повідомляють компілятору, що дана змінна є масивом. Зверніть увагу на важливий факт. Квадратні дужки можна ставити як після базового типу масиву, так і після імені масиву. Після знака рівності вказується оператор new, який ініціює виділення пам'яті під масив (так само, як і в випадку з об'єктами), тип елементів, які будуть зберігатися в ньому (повинен бути сумісний з базовим типом, оголошеним раніше), і, нарешті, їх кількість , вказане в квадратних дужках.
Нумерація елементів в Java array починається з 0. Так, індекс першого елемента в даному масиві дорівнюватиме 0, а шостого - 5. Щоб звернутися до конкретного елементу масиву, наприклад, п'ятого, досить вказати ім'я масиву та індекс елемента в квадратних дужках поруч з ім'ям. Таким чином можна як привласнювати значення елементу, так і витягувати його. Однак слід бути уважним, оскільки якщо передати індекс, за яким не існує елемента, то виникне помилка.
Багатовимірні масиви являють собою рядиодновимірних, на які посилаються елементи інших масивів. Іншими словами, це масиви масивів. Найбільш простими серед них є двовимірні. На їхньому прикладі ми і спробуємо розібратися з поняттям. Для наочності на малюнку нижче наведені синтаксис і схема, що описує структуру двовимірного масиву.
Як бачимо, синтаксис не особливо відрізняється відодновимірних масивів. Давайте розберемо структуру. У перших дужках ми виділили місце під 5 елементів. Ці елементи є нічим іншим як посиланнями на окремі масиви. При цьому розмір кожного з них визначено числом в других дужках. По суті, аналогом двовимірних масивів в математиці є матриці. Зверніть увагу, що крім елементів, в пам'яті виділяється окреме місце, де зберігається значення довжини масиву (length). Як правило, робота з багатовимірними масивами здійснюється за допомогою вкладених циклів for.
Двовимірний масив є масивом масивів. Це ми вже з'ясували. Але чи можуть масиви, що містяться в ньому, мати різну довжину? Відповідь - так, можуть. Для цього в Java передбачена можливість оголошувати двовимірний масив спеціальним чином. Наприклад, ми хочемо створити двовимірний масив, який зберігав би в собі три одновимірних масиву довжиною 2, 3 і 4 відповідно. Оголошується він у такий спосіб:
intarr [] [] = newint [3] [];
Зверніть увагу, що ми не вказали число в других дужках. Визначення розміру масивів в arr робиться так:
arr [0] = new int [2];
arr [1] = new int [3];
arr [2] = newint [4];
Звертаючись до елементу під індексом 0, вказуєна перший масив, ми оголошуємо його з розмірністю 2. Під елементом з індексом 1 буде зберігатися масив розмірністю 3, і так далі. Все досить просто.
Ініціалізувати масиви можна і безпосередньо при їх створенні. Це досить просто.
Зверніть увагу на оголошення масивів jerseyNumber і playerName.
У випадку з двовимірними масивами дане оголошення виглядає так:
int [] [] arr = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}
Для цього замість оператора new відкриваютьсяфігурні дужки, в яких через кому йде перерахування всіх елементів. Java в цьому випадку автоматично виділяє пам'ять під них і індексує їх відповідним чином.
Для роботи з такими сутностями, як масиви вJava, в пакеті java.util є спеціальний клас Arrays, який надає безліч статичних методів, що значно полегшують операції з ними. Перелік основних методів представлений на малюнку нижче.
Розберемо деякі найкорисніші Java array методи:
- copyOf (масив, довжина) - повертає копіюпереданого масиву відповідної довжини. Якщо передана довжина більше оригінального масиву, то всі «зайві» елементи заповнюються значенням за замовчуванням (0, якщо простий тип, і null, якщо контрольний).
- copyOfRange (масив, перший індекс, останнійіндекс) - не зазначений на малюнку, але корисний метод. Він копіює частину переданого масиву, визначену відповідними індексами, починаючи з першого і закінчуючи останнім.
- sort (масив) - сортує елементи масиву по зростанню.
- fill (масив, значення) - заповнює переданий масив відповідним значенням.
- binarySearch (масив, значення) - повертаєіндекс, під яким елемент з відповідним значенням знаходиться в переданому відсортованому масиві. Якщо ж такий елемент відсутній, то повертається негативне число.
Оскільки методи статичні, то для їх виклику не потрібно створювати екземпляр класу Arrays. Вони викликаються безпосередньо з нього: Arrays.sort (arr).
Ми розглянули найбільш важливі аспектищодо масивів, і для тих, хто тільки приступає до вивчення Java для початківців, цього вистачить для базового розуміння такої сутності, як масив, і основних прийомів роботи з ним. Звичайно, практика дасть більше розуміння роботи даного інструменту. Поетом не полінуйтеся зробити кілька вправ, маніпулюючи масивами різними способами.
Допоміжний клас Array Java використовується вже в «бойових» умовах, тому для початку рекомендується вчитися виробляти всі основні операції з масивами вручну.
</ P>