JavaRush /Java блог /Random UA /Java масиви
articles
15 рівень

Java масиви

Стаття з групи Random UA

Масиви

Масив – це структура даних, у якій зберігаються величини однакового типу. Доступ до окремого елемента масиву здійснюється за допомогою цілого індексу. Наприклад, якщо а - масив цілих чисел, то значення виразу а [i] дорівнює i-му цілого числа в масиві. Java масиви - 1Масив оголошується в такий спосіб: спочатку вказується тип масиву, тобто тип елементів, які у масиві, яким ставиться пара порожніх квадратних дужок, та був — ім'я змінної. Наприклад, ось як оголошується масив, що складається з цілих чисел:
int[] a;
Однак цей оператор лише оголошує змінну а, не ініціалізуючи її справжнім масивом. Щоб створити масив, потрібно застосувати оператор new.
int[] a = new int [100];
Цей оператор створює масив, що складається із 100 цілих чисел. Елементи цього масиву нумеруються від 0 до 99 (а чи не від 1 до 100). Після створення масив можна заповнювати, наприклад, циклом.
int[] а = new int[100];
for (int i = 0; i < 100; i++)
 a[i] = i; //Заполняет массив числами от 0 до 99
Якщо ви спробуєте звернутися до елемента а [100](або будь-якого іншого елемента, індекс якого виходить за межі діапазону від 0 до 99), створивши масив, що складається зі 100 елементів, програма припинить роботу, оскільки виникне виняткова ситуація, пов'язана з виходом індексу масиву за межі допустимого діапазону . Щоб підрахувати кількість елементів у масиві, використовуйте метод ім'я Масиву .length. Наприклад,
for (int i = 0; i < a.length; i++, System.out.println(a[i]));
Після створення масиву змінити його розмір неможливо (хоча можна, звичайно, змінювати його окремі елементи). Якщо під час виконання програми необхідно часто змінювати розмір масиву, краще використовувати іншу структуру даних, що називається списком масивів (array list). Масив можна оголосити двома способами:
int[] a;
або
int a[];
Більшість програмістів на мові Java віддають перевагу першому стилю, оскільки в ньому чіткіше відокремлюється тип масиву int [](цілочисленний масив) від імені змінної.

Ініціалізатори масивів та безіменні масиви

У мові Java є засіб одночасного створення масиву та її ініціалізації. Ось приклад такої синтаксичної конструкції:
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
Зазначимо, що в цьому випадку не потрібно використовувати оператор new. Крім того, можна навіть ініціалізувати безіменний масив:
new int[] {16, 19, 23, 29, 31, 37}
Цей вираз виділяє пам'ять нового масиву і заповнює його числами, вказаними у фігурних дужках. При цьому підраховується їхня кількість і, відповідно, визначається розмір масиву. Цю синтаксичну конструкцію зручно застосовувати для повторної ініціалізації масиву без утворення нової змінної. Наприклад, вираз
smallPrimes = new int{17, 19, 23, 29, 31, 37};
являє собою укорочений запис виразу
int[] anonymous = {17, 19, 23, 29, 31, 37};
smallPrimes = anonymous;
Можна створити масив нульового розміру. Такий масив може бути корисним при написанні методу, що обчислює якийсь масив, який виявляється порожнім. Масив нульової довжини оголошується так:
new тип Элементов[]
Зауважимо, що такий масив не еквівалентний об'єкту null.

Копіювання масивів arrays

Один масив можна скопіювати в інший, але при цьому обидві змінні будуть посилатися на той самий масив.
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12; //Теперь элемент smallPrimes[5]также дорівнює 12
Результат показано на рис. 3.1. Якщо необхідно скопіювати всі елементи одного масиву в інший, слід використовувати метод arraycopy з класу System. Його виклик виглядає так:
System.arraycopy(from, fromlndex, to, tolndex, count);
Масив toповинен мати достатній розмір, щоб у ньому помістабося всі елементи, що копіюються. Java масиви - 2
Рис.3.1. Копіювання масиву
Наприклад, наведені нижче оператори, результати роботи яких зображені на рис. 3.2 створюють два масиви, а потім копіюють останні чотири елементи першого масиву в другій. Копіювання починається з другої позиції у вихідному масиві, а елементи, що копіюються, поміщаються в цільовий масив, починаючи з третьої позиції.
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007};
System.аrrаусору(smallPrimes, 2, luckyNumbers, 3, 4);
for (int i = 0; i < luckyNumbers.length; i++)
System.out.println(i + ": " + luckyNumbers[i]);
Виконання цих операторів призводить до наступного результату.
0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13
Java масиви - 3
Мал. 3.2. Копіювання елементів масиву
Масив у мові Java істотно відрізняється від масиву в мові C++. Однак він практично збігається із покажчиком на динамічний масив. Це означає, що оператор
int[] a = new int[100]; //Java
еквівалентний оператору
int* = new int[100]; //C++,
а не
int a[100]; //C++
У мові Java оператор []за промовчанням перевіряє діапазон зміни індексів. Крім того, в мові Java немає арифметики покажчиків - не можна збільшити покажчик, щоб звернутися до наступного елементу масиву. Посилання на першоджерело: Java масиви
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ