Масив (англ. array) являє собою потужний інструмент, який дозволяє працювати з великою кількістю даних. Очевидно, що якщо вам у процесі роботи вашого коду де потрібно зберегти, наприклад, 100 значень, то робити для цього таку ж кількість змінних як мінімум нерозумно. Масив дозволяє зберігати велику кількість значень під одним іменем і звертатися до них за відповідним індексом. Поняття масивів є наріжним каменем у вивченні курсу Java для початківців. Адже вони є основою для багатьох структур даних.
Оскільки Java це, насамперед, ООП, порівняно з масивами в інших мовах програмування java array має одну відмітну особливість – вони представляються у вигляді об'єктів. Крім інших переваг, це позбавляє від потреби стежити за очищенням пам'яті, оскільки вона звільняється автоматично.
Створення і маніпуляції одновимірними масивами
Одновимірний масив представляється собою класичний Java array є сукупністю пов'язаних загальним ім'ям елементів, кожному з яких відповідає певний індекс. Спосіб оголошення масиву наведено на малюнку нижче.
Спочатку оголошується тип Java array, який визначає тип значень, що зберігаються в ньому. Це може бути будь-який дійсний до Java тип даних. Далі йдуть ім'я масиву і квадратні дужки, повідомляють компілятору, що ця змінна є масивом. Зверніть увагу на важливий факт. Квадратні дужки можна ставити як після базового типу масиву, так і після імені масиву. Після знака рівності вказується оператор new, ініціює виділення пам'яті під масив (так само, як і у випадку з об'єктами), тип елементів, які будуть зберігатися в ньому (повинен бути сумісний з базовим типом, оголошеним раніше), і, нарешті, їх кількість, вказана у квадратних дужках.
Нумерація елементів в Java array починається з 0. Так, індекс першого елемента в даному масиві буде дорівнює 0 а шостого – 5. Щоб звернутися до конкретного елементу масиву, наприклад, п'ятого, досить вказати ім'я масиву та індекс елемента в квадратних дужках поруч з ім'ям. Таким чином можна присвоювати значення елементу, так і витягувати його. Проте слід бути уважним, оскільки якщо передати індекс, за яким не існує елемента, то виникне помилка.
Багатовимірні масиви в Java
Багатовимірні масиви являють собою ряди одновимірних, на які посилаються елементи інших масивів. Іншими словами, це масиви масивів. Найбільш простими серед них є двовимірні. На їх прикладі ми і спробуємо розібратися з поняттям. Для наочності на малюнку нижче наведено синтаксис і схема, що описує структуру двовимірного масиву.
Як бачимо, синтаксис не особливо відрізняється від одновимірних масивів. Давайте розберемо структуру. У перших дужках ми виділили місце під 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 і так далі. Все досить просто.
Альтернативний синтаксис оголошення java array
Ініціалізувати масиви можна і безпосередньо при їх створенні. Це досить просто.
Зверніть увагу на оголошення масивів jerseyNumber і playerName. У випадку з двовимірними масивами дане оголошення виглядає так: int[] []arr = { {123}, {456}, {789} } Для цього замість оператора new відкриваються фігурні дужки, в яких через кому йде перерахування всіх елементів. Java в цьому випадку автоматично виділяє пам'ять під них і індексує їх відповідним чином.
Допоміжний клас Arrays
Для роботи з такими сутностями, як масиви в Java, в пакеті java.util є спеціальний клас Arrays, який надає безліч статичних методів, що значно полегшують операції з ними. Перелік основних методів представлений на малюнку нижче.
Розберемо деякі корисні Java array методи: - copyOf (масив, довжина) – повертає копію переданого масиву відповідної довжини. Якщо передана довжина більше оригінального масиву, то всі «зайві» елементи заповнюються значенням за замовчуванням (0 якщо простий тип, null , якщо контрольний).
- copyOfRange (масив, перший індекс, останній індекс) – не зазначений на малюнку, але корисний метод. Він копіює частину переданого масиву, визначену відповідними індексами, починаючи з першого і закінчуючи останнім. - sort (масив) – сортує елементи масиву за зростанням. - fill (масив, значення) – заповнює переданий масив відповідним значенням. - binarySearch (масив, значення) – повертає індекс, під яким елемент з відповідним значенням знаходиться в переданому відсортованому масиві. Якщо ж такий елемент відсутній, то повертається від'ємне число. Оскільки статичні методи, то для їх виклику не потрібно створювати екземпляр класу Arrays. Вони викликаються безпосередньо з нього: Arrays.sort(arr).
Висновок
Ми розглянули найбільш важливі аспекти щодо масивів, і для тих, хто тільки приступає до вивчення Java для початківців, цього вистачить для базового розуміння такої сутності, як масив, та основних прийомів роботи з ним. Звичайно, практика дасть більше розуміння роботи даного інструменту. Поетом не полінуйтеся зробити кілька вправ, маніпулюючи масивами різними способами. Допоміжний клас Array Java використовується вже у «бойових» умовах, тому для початку рекомендується вчитися виробляти всі основні операції з масивами вручну.