1. Масиви в пам'яті
Картинки в попередніх прикладах трохи неточні.
При створенні масивів (так само як і при створенні рядків) у пам'яті виділяються два блоки пам'яті: один для зберігання самого масиву (контейнера), а другий — під змінну, яка зберігає його адресу. Уточнена ситуація зображена на картинці нижче:

Зеленим кольором зображений масив на 10 елементів типу int і змінна типу int[], яка зберігає адресу (посилання) масиву типу int у пам'яті.
Для порівняння синім кольором позначена звичайна змінна типу int, яка зберігає значення 199.
Щось нагадує збереження рядків у пам'яті, чи не так?
Так, рядки. І так само, як при роботі з рядками, «змінні типу масив» можна присвоювати одна одній:
| Код | Пояснення |
|---|---|
|
Створюємо масив на 10 елементів типу int.У комірку з індексом 2 записуємо значення 4.У комірку з індексом 7 записуємо значення 9.У змінну b зберігаємо адресу, яка є у змінній a.Тепер a і b вказують на один і той самий об'єкт-масив у пам'яті.У комірку з індексом 9 об'єкта-масиву записуємо суму значень, які зберігаються у комірках 2 (зберігається 4) і 7 (зберігається 9). |
При цьому об'єкт-масив залишиться там, де й був, а змінні a і b будуть зберігати однакові адреси (посилання) на один і той самий об'єкт. Дивіться картинку:
2. Робота з масивом більш детально
Масив можна створити з абсолютно будь-якого типу. Для цього потрібно лише після імені типу написати квадратні дужки. Загальний вигляд створення масиву буде такий:
тип[] ім'я = new тип[кількість];
Де тип — це тип елементів (комірок) масиву, які ми будемо зберігати в масиві. Ім'я — це ім'я змінної, за якою ми будемо звертатися до масиву, а кількість — це кількість комірок у масиві.
У прикладі вище наведена канонічна форма: створення змінної-масиву та створення об'єкта-масиву. Насправді це дві незалежні конструкції.
Можна створити змінну-масив та об'єкт-масив окремо:
тип[] ім'я;
ім'я = new тип[кількість];
І ще один важливий момент:
Приклади:
| Код | Пояснення |
|---|---|
|
Створення масиву з n елементів |
|
Створення масиву на 203 елемента |
|
|
0..99), програма аварійно завершиться з помилкою
ArrayIndexOutOfBoundsException — індекс за межами масиву.
3. Довжина масиву
Як ти бачив(-ла) в попередньому прикладі, можна окремо створити змінну типу масив і потім десь у коді присвоїти їй значення (посилання на об'єкт-масив). Можна зробити навіть так:
| Код | Пояснення |
|---|---|
|
Створюємо змінну-масив типу int[]Якщо змінна a менша 10,то створити масив з 10 елементів.Інакше створити масив з 20 елементів |
А як працювати далі з таким масивом? Як дізнатися, скільки в ньому елементів?
Для цього у масиву є спеціальна властивість (змінна) — length. І дізнатися довжину масиву можна за допомогою такого виразу:
array.length;
Де array — це ім'я змінної-масиву, а length — це ім'я властивості у об'єкта-масиву. Значення у властивості length змінити не можна: саму властивість length можна присвоювати іншим змінним, але їй щось присвоювати не можна (програма просто не скомпілюється).
Ось як можна продовжити попередній приклад:
| Код | Пояснення |
|---|---|
|
Створюємо змінну-масив типу int[]Якщо змінна a менша 10,то створити масив з 10 елементів.Інакше створити масив з 20 елементівЦикл по всіх елементах масиву: від 0 і до довжини array.length — 1 |
4. Резюмуємо факти про масиви в Java
Давайте резюмуємо відомі факти про масиви:
Факт 1. Масив складається з безлічі комірок.
Факт 2. Доступ до конкретної комірки здійснюється через вказівку її номера.
Факт 3. Усі комірки одного типу.
Факт 4. Початкове значення для всіх комірок — 0 і null (якщо в комірці зберігається адреса), false (для типу boolean). Детальніше про значення за замовчуванням ви дізнаєтеся в цій лекції.
Факт 5. String[] list – це просто оголошення змінної: сам контейнер (об'єкт-масив) ще не створено. Щоб із ним можна було працювати, треба створити масив (контейнер) і покласти його в цю змінну, а потім уже використовувати. Дивись приклад нижче.
Факт 6. Коли ми створюємо об'єкт-масив (контейнер), треба вказати, якої він довжини — скільки в ньому комірок. Це робиться командою виду: new TypeName[n];
Факт 7. Довжину масиву можна дізнатися через властивість .length.
Факт 8. Після створення масиву не можна змінити ні тип його елементів, ні їхню кількість.
| Код | Пояснення |
|---|---|
|
s дорівнює nulllist дорівнює null |
|
Змінна list зберігає посилання на об'єкт – масив рядків із 10 елементів.n дорівнює 10 |
|
Тепер |
|
Буде згенеровано виняток (помилка програми) — програма аварійно завершиться. list містить пусте посилання — null |
|
Буде згенеровано виняток (помилка програми) — вихід за межі масиву. Якщо list містить 10 елементів/комірок, то їхні дозволені індекси: 0 1 2 3 4 5 6 7 8 9 — усього 10 штук. |
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ