Масиви в Java

⚡ Розумний підсумок

Масиви в Java — це контейнери фіксованого розміру на основі індексів, які зберігають елементи одного типу даних у безперервній пам'яті, забезпечуючи доступ у постійному часі, вбудовану перевірку меж та поле довжини, що робить їх основою для більшості колекцій стандартних бібліотек.

  • 📦 Фіксований розмір: Масив містить задану кількість елементів одного типу.
  • 🔢 Індекс, що базується на нулі: Елементи мають довжину від 0 до мінус один.
  • 🧩 Два типи: Java має одновимірні та багатовимірні масиви.
  • 🛠️ Три кроки: Кожен масив оголошується та будується за допомогою new, та ініціалізовано.
  • 🛡️ Перевірка меж: JVM викидає ArrayIndexOutOfBoundsException повз останній слот.
  • ↩️ За посиланням: Зміни елементів, внесені всередині методу, зберігаються для викликаючої сторони.
  • 📏 Поле довжини: Кожен масив надає доступ length для безпечної ітерації.

Масиви в Java

Що таке a Java Масив?

A Java масив — це структура фіксованого розміру, яка зберігає елементи одного типу даних у безперервній пам'яті. Кожен елемент досягається за допомогою індексу, що починається з нуля, тому перший знаходиться за адресою 0 і останній о length - 1Масиви успадковуються від Object і реалізувати Serializable та Cloneable, і може містити примітиви або посилання на об'єкти.

Масиви замінюють довгі послідовності нумерованих змінних. Розглянемо шість незалежних цілих чисел:

x0 = 0;
x1 = 1;
x2 = 2;
x3 = 3;
x4 = 4;
x5 = 5;

Ті самі шість значень знаходяться в одному масиві довжиною шість:

x[0] = 0;
x[1] = 1;
x[2] = 2;
x[3] = 3;
x[4] = 4;
x[5] = 5;

A петля змінна може керувати індексом у дужках, тому кожен елемент обробляється трьома рядками замість шести копій:

for (int count = 0; count < 5; count++) {
    System.out.println(x[count]);
}

Типи масиву в Java

Java Масиви бувають двох форм:

  1. Одновимірний масив: плоский список елементів.
  2. Багатовимірний масив: масив масивів, що використовується для сіток та матриць.

Змінні масиву: оголошення, конструювання та ініціалізація

Використання масиву є триступеневий процес: оголосити, побудувати з new, а потім ініціалізувати.

1) Оголосити масив

Синтаксис:

<elementType>[] <arrayName>;

or (старіша форма в стилі C, досі дійсна):

<elementType> <arrayName>[];

приклад:

int[] intArray;   // canonical form: brackets on the type
int intArray2[];  // legacy C-style form, discouraged in new code

2) Побудуйте масив

Синтаксис:

arrayName = new dataType[size];

приклад:

intArray = new int[10]; // defines that intArray will store 10 integer values

Декларація та будівництво разом:

int[] intArray = new int[10];

3) Ініціалізація масиву

intArray[0] = 1; // assigns 1 to the first element (index 0)
intArray[1] = 2; // assigns 2 to the second element (index 1)

Оголошення та ініціалізація за один крок використання літерала масиву:

int[] intArray = {1, 2, 3, 4};
// initialises an integer array of length 4 where the first element is 1,
// the second element is 2, and so on.

Перша програма для роботи з масивами в Java

Крок 1) Скопіюйте наступний код у редактор:

class ArrayDemo {
    public static void main(String args[]) {
        int array[] = new int[7];

        for (int count = 0; count < 7; count++) {
            array[count] = count + 1;
        }

        for (int count = 0; count < 7; count++) {
            System.out.println("array[" + count + "] = " + array[count]);
        }

        // System.out.println("Length of Array  =  " + array.length);
        // array[8] = 10;
    }
}

Крок 2) Збережіть, скомпілюйте та запустіть код. Спостерігайте за результатом.

Очікуваний результат:

array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
array[5] = 6
array[6] = 7

Крок 3) If x є посиланням на масив, x.length повертає кількість слотів. Розкоментуйте перший закоментований рядок і запустіть ще раз:

Length of Array  =  7

Крок 4) На відміну від C, Java перевіряє межі кожного доступу до масиву. Розкоментуйте другий закоментований рядок і запустіть ще раз:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
        at ArrayDemo.main(ArrayDemo.java:11)
Command exited with non-zero status 1

Крок 5) JVM викидає ArrayIndexOutOfBoundsExceptionУ C той самий доступ повертав би сміття із суміжної пам'яті замість невдачі.

Java Масив: Передача за посиланням

Масиви передаються методам за посиланням. Метод отримує копію посилання, тому зміни елементів, внесені всередині методу, видимі для викликаючої сторони.

Приклад: масиви передаються за посиланням.

Крок 1) Скопіюйте наступний код у редактор:

class ArrayDemo {
    public static void passByReference(String a[]) {
        a[0] = "Changed";
    }

    public static void main(String args[]) {
        String[] b = {"Apple", "Mango", "Orange"};
        System.out.println("Before Function Call    " + b[0]);
        ArrayDemo.passByReference(b);
        System.out.println("After Function Call    " + b[0]);
    }
}

Крок 2) Збережіть, скомпілюйте та запустіть код. Спостерігайте за результатом.

Очікуваний результат:

Before Function Call    Apple
After Function Call    Changed

Багатовимірні масиви в Java

Багатовимірні масиви – це масиви масивів. Додайте ще один набір квадратних дужок для кожного виміру. Щоб створити двовимірну цілочисельну сітку з чотирма рядками та п'ятьма стовпцями:

int[][] twoD = new int[4][5];

Вам потрібно визначити розмір лише першого (крайнього лівого) виміру спереду. Решту вимірів можна розподілити окремо, і кожен рядок може мати свою власну довжину, що робить Java 2-вимірні масиви true зубчасті масиви.

приклад:

public class Guru99 {
    public static void main(String[] args) {
        // Create a 2-dimensional array with 4 rows and 4 columns.
        int[][] twoD = new int[4][4];

        // Assign three elements to it.
        twoD[0][0] = 1;
        twoD[1][1] = 2;
        twoD[3][2] = 3;

        System.out.print(twoD[0][0] + " ");
    }
}

Очікуваний результат:

1

Поширені запитання

A Java Масив (array) — це контейнер фіксованого розміру, який зберігає елементи одного типу даних. Доступ до кожного елемента здійснюється за допомогою індексу, що починається з нуля, і кожен масив надає поле довжини з кількістю слотів.

Оголосити за допомогою int[] arr, побудувати за допомогою new int[size], а потім присвоїти значення за індексом. Щоб зробити всі три дії в одному рядку, використовуйте літерал, такий як int[] arr = {1, 2, 3, 4}.

Java підтримує одновимірні та багатовимірні масиви. Одновимірний масив — це плоский список, а багатовимірний масив — це масив масивів, що використовуються для таблиць, сіток та матриць.

Використовуйте поле length, наприклад, arr.length. Воно повертає кількість слотів і працює для будь-якого типу масиву. На відміну від String, масиви надають length як поле, а не виклик методу.

JVM перевіряє межі кожного доступу до масиву. Читання або запис індексу нижче нуля або до або більше довжини викликає виняток ArrayIndexOutOfBoundsException, запобігаючи помилкам пошкодження пам'яті, які виникають у C та C++.

Java передає аргументи за значенням, але для масивів це значення є копією посилання. Метод діє з тим самим базовим масивом, тому зміни елементів всередині методу видно тому, хто викликає.

Помічники коду машинного навчання розпізнають шаблон оголошення-конструювання-ініціалізації та завершують літерали або цикли. Вони також позначають поширені помилки, що відрізняються на одиницю, які можуть викликати виняток ArrayIndexOutOfBoundsException під час виконання.

Так. GitHub Copilot створює оголошення масивів, цикли, виклики Arrays.sort та двовимірні матричні обходи з коментаря, написаного простою мовою. Revпереглянути згенеровані межі перед запуском на робочих даних.

Підсумуйте цей пост за допомогою: