Масиви

Відкрита

1. Масив — це контейнер елементів

Найімовірніше, ви чули, що комп'ютери можуть обробляти величезні обсяги інформації. Умовний оператор (if-else) і цикли (for, while), звичайно, у цьому допомагають. Однак далеко на них не заїдеш, адже оброблювані дані треба якось зберігати.

На цей випадок у Java, так само як майже в усіх мовах програмування, є одна чудова річ, а саме масиви (Array). Їх також називають таблицями.

Масив — це спеціальний об'єкт, в якому можна зберігати не одне значення, а декілька.

Якщо раніше ми порівнювали змінну з коробкою (де можна зберігати якесь значення), то масив більше схожий на коробку, всередині розділену на секції. Кожна секція в «коробці-масиві» має свій номер. Нумерація, звичайно ж, з нуля...

Ну або можна провести іншу аналогію. Порівняймо індивідуальний житловий будинок і багатоповерхівку. В індивідуальному будинку мешкає одна сім'я, а багатоповерхівка розділена на квартири. Щоб написати листа сім'ї, яка живе в окремому будинку, треба вказати його унікальну адресу. А щоб написати листа сім'ї, яка живе в квартирі, треба вказати унікальну адресу будинку та номер квартири.

Отож змінна-масив — це змінна-багатоповерхівка. У ній можна зберігати не одне значення, а декілька. У такій змінній є кілька квартир (комірок), і до кожної комірки можна звернутися за її номером (індексом).

Для цього в квадратних дужках після імені змінної потрібно вказати індекс комірки, до якої звертаємося. Це досить просто:

array[індекс] = значення;

де аrray — це ім'я змінної-масиву, індекс — номер комірки в масиві, а значення — те значення, яке ми хочемо записати в зазначену комірку.

Однак спершу з'ясуймо, як створювати масиви.


2. Створення масиву елементів у Java

Створення масиву елементів у Java

Припустімо, вашій програмі потрібно десь зберігати 100 цілих чисел. Найімовірніше, для цього підійшов би масив. І як же його створити?

Якби ми хотіли зберігати одне ціле число, нам підійшов би тип int, ну а якщо стоїть завдання зберігати 100 цілих чисел, певно, нам потрібен масив типу int. Отакий вигляд матиме код для його створення:

int[] array = new int[100];

Розберімося, що тут написано.

Як ви вже, мабуть, здогадалися, вираз ліворуч від знака рівності — це оголошення змінної з іменем array типу int[]. Після типу int стоять квадратні дужки, які немовби натякають, що в «коробках» цього типу можна буде зберігати не одне значення, а декілька.

Праворуч від знака рівності відбувається «створення» (слово new) об'єкта на 100 елементів (комірок) типу int. Теж не надто складно.

Якби ми хотіли, приміром, створити масив на 20 комірок для зберігання дійсних чисел, код для його створення мав би приблизно такий вигляд:

double[] vals = new double[20];

Кількість комірок у масиві називають розміром масиву або довжиною масиву. А завдяки здатності зберігати багато значень масиви інакше називають контейнерами.

Важливий факт: розмір контейнера (масиву) не можна змінити після створення.

Можна створити новий, але довжину вже створеного контейнера змінити не вдасться.


6
Задача
Java Syntax Zero,  6 рівень1 лекція
Недоступна
Створюємо масиви
Створюємо масиви

3. Робота з комірками масиву

Робота з комірками масиву

Добре, створювати масиви ми навчилися, а як правильно з ними працювати?

Майже так само, як і зі звичайними змінними, тільки після імені змінної-масиву обов'язково треба вказувати номер комірки, з якою ми працюємо.

Нумерація комірок масиву завжди починається з нуля. Якщо маємо масив на 10 елементів, то номери (індекси) його комірок — 0..9, якщо масив на 200 елементів, то 0..199. І далі за аналогією.

Приклади:

Код Пояснення
int[] a = new int[10];
a[2] = 4;
a[7] = 9;
a[9] = a[2] + a[5];
Створюємо масив на 10 елементів типу int.
У комірку з індексом 2 записуємо значення 4.
У комірку з індексом 7 записуємо значення 9.
У комірку з індексом 9 записуємо суму значень, які зберігаються в комірках 2 (зберігається 4) і 5 (зберігається 0).

От що зберігатиметься в пам'яті після виконання цього коду:

Стовпець ліворуч (цифри сірого кольору) — це номери (індекси) комірок. У комірках зберігаються внесені значення: 4, 9 і 4. Відразу після створення масиву всі комірки заповнені нулями.

Важливо! Усі комірки масиву мають однаковий тип даних. Якщо ми створили масив рядків String, у його комірках можна зберігати лише рядки. Тип даних масиву задають під час його створення. Ані тип даних, ані довжину масиву пізніше змінити не можна.


6
Задача
Java Syntax Zero,  6 рівень1 лекція
Недоступна
Парні та непарні комірки масиву
Парні та непарні комірки масиву
6
Задача
Java Syntax Zero,  6 рівень1 лекція
Недоступна
Працюємо з елементами масиву
Працюємо з елементами масиву
Коментарі (28)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
hidden #3500645
Рівень 30
27 жовтня 2024, 17:05
Трохи дивує правильна відповідь виконання завдання Задачі 2 (Парні та непарні комірки масиву), де просто вручну присвоюється значення кожній змінній масиву. Окей, тут всього 5 значень, адже масив маленький, але уявімо, що цих комірок 1000, то що, теж будете вручну в кожну записувати значення? не логічніше написати просту умову?
for(int i = 0; i < strings.length; i++)
{
    if (i % 2 == 0)
        strings[i] = EVEN;
    else
        strings[i] = ODD;
}
ZSUnix Навідник артилерійського в ЗСУ
16 грудня 2024, 17:19
або ще простіше:
for(int i = 0; i < strings.length; i++){
     strings[i] = i % 2 == 0 ? EVEN : ODD;
}
для цього й придумали тернарник.
hidden #3500645
Рівень 30
17 грудня 2024, 12:50
так 👍 погоджуюсь)
unknownpanic Backend Developer в Meta
23 жовтня 2024, 17:10
public class Main {
    public static int[] array = new int[]{-1, 2, 3, -4, -5};
    public static void main(String[] args) {
        for(int i = 0; i < array.length; i++) {
            if ((array[i] % 2) == 0) {
                array[i] = -array[i];
                System.out.println(array[i]);
            }
        }
    }
}
Olelsandr Java Developer
17 липня 2024, 09:00
for(int i =0;i <array.length; i++){ array[i]=array[i]%2==0?-array[i]:array[i]; }
Alex
Рівень 2
7 серпня 2024, 01:49
бомба, ні прочитати що ти написав, ні зрозуміти, так тримати, ніндзя!
Ростислав
Рівень 32
12 вересня 2024, 18:47
Написав за допомогою тернарного оператора.
Alex
Рівень 2
12 вересня 2024, 23:14
ааатеперзрозуміло,атоянедужемігпрочитатищотамнаписано
Sergey
Рівень 1
25 вересня 2024, 06:25
Тут буде купа зайвих пере-присвоєнь. Як результат - довше виконання, та фрагментація пам'яті. І було б непогано розставити дужки - так легше читати :)
tterribaess
Рівень 6
31 січня 2024, 14:59
Друга задача, читайте уважно умову
Василь trainee в Kindgeek
7 липня 2023, 12:56
щоб перевести число на протилежне можна помножити його на (-1)
Ігор
Рівень 41
Expert
27 квітня 2023, 14:16
Друга задача, читайте уважно умову, треба перевіряти саме значення елементу масива, а не його індекс
Roma Chernesh
Рівень 16
4 грудня 2022, 09:13
Все просто і ясно розписано за масиви. Лайкую!
bahus520
Рівень 11
17 квітня 2022, 17:11
В чому проблема, вже давно як почав нову програму в к..нченому Intellij, а воно далі запускає і перевіряє передю прогу7 Вже 2 рази перегружав програму, а воно даі то саме...(
Rena
Рівень 8
22 травня 2022, 22:39
В мене так само було) я роблю так: клікаю на віконечко Solution правою кнопкою і вибираю запуск чи перевірку. Після цього працює як треба. Типу увага Intellliji перемикається саме на той Solution, з яким ви зараз працюєте
Pan Vitali Moroz
Рівень 51
9 вересня 2022, 10:50
наводиш мишенятко на клас або метод и тиснеш виконати трикутник, воно запуститься з місця а от з перевіркою попередньої задачі теж щось було, здається глючне
Василь
Рівень 10
Expert
25 березня 2023, 16:52
в моєму випадку глючить теж і твої поради теж не допомагають(
Me Lex
Рівень 12
14 лютого 2022, 15:45
можна циклом зробити for (int x=0;x<=4;x++) { if (array[x] % 2 == 0) { array[x] = - array[x]; } }
Roman
Рівень 13
11 вересня 2022, 12:34
for (int i =0;i<=4;i++){ if(array[i]%2==0) array[i]=array[i]*(-1); }
Illia QA Automation Engineer
27 грудня 2022, 20:53
краще так, щоб не помилитись з довжиною масива
for (int i = 0; i < array.length; i++) {
            if (array[i] %2 == 0) {
                array[i] = array[i] * -1;
            }
        }
або
int i = 0;
        while (i < array.length) {
            if (array[i] %2 == 0) {
                array[i] = array[i] * -1;
            }
            i++;
        }
Василь
Рівень 10
Expert
25 березня 2023, 17:23
Добре, що є коментарі), бо ніде в лекції не сказано, що з масивами можна робити такі ж операції що й із звичайними змінними). Дякую, що коментуєте.
Alex Lu
Рівень 10
13 січня 2022, 13:22
https://javarush.com/groups/posts/massivy-java https://javarush.com/groups/posts/1932-koe-chto-o-massivakh