Масиви в 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-D масиви 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 Масивът е контейнер с фиксиран размер, който съхранява елементи от един тип данни. Достъпът до всеки елемент се осъществява чрез индекс, базиран на нула, и всеки масив предоставя поле за дължина с броя на слотовете.

Декларирайте с int[] arr, конструирайте с new int[size], след което присвоете по индекс. За да направите и трите на един ред, използвайте литерал като int[] arr = {1, 2, 3, 4}.

Java Поддържа едномерни и многомерни масиви. Едномерният масив е плосък списък, а многомерният масив е масив от масиви, използвани за таблици, мрежи и матрици.

Използвайте полето за дължина, например arr.length. То връща броя на слотовете и работи за всеки тип масив. За разлика от String, масивите предоставят дължина като поле, а не като извикване на метод.

JVM проверява границите при всеки достъп до масив. Четенето или записването на индекс под нулата или на или по-голяма дължина хвърля ArrayIndexOutOfBoundsException, предотвратявайки грешките с повреда на паметта, които засягат C и C++.

Java Предава аргументи по стойност, но за масиви тази стойност е копие на референцията. Методът действа върху същия базов масив, така че промените в елементите вътре в метода са видими за извикващия метод.

Асистентите за машинно обучение разпознават шаблона „декларирай-конструирай-инициализирай“ и довършват литерали или цикли. Те също така сигнализират за често срещани грешки „отклонение с едно“, които биха предизвикали изключение ArrayIndexOutOfBoundsException по време на изпълнение.

Да. GitHub Copilot създава декларации на масиви, цикли, извиквания на Arrays.sort и двуизмерни матрични разходки от коментар на разбираем език. Revпрегледайте генерираните граници, преди да ги изпълните спрямо производствените данни.

Обобщете тази публикация с: