Tablice w Java

⚡ Inteligentne podsumowanie

Tablice w Java to kontenery o stałym rozmiarze, oparte na indeksach, które przechowują elementy jednego typu danych w ciągłej pamięci, zapewniając stały dostęp w czasie, wbudowane sprawdzanie ograniczeń i pole długości, dzięki czemu stanowią podstawę większości standardowych kolekcji bibliotecznych.

  • 📦 Stały rozmiar: Tablica zawiera ustaloną liczbę elementów jednego typu.
  • 🔢 Indeks zerowy: Elementy mają długość od 0 do minus jeden.
  • 🧩 Dwa typy: Java ma tablice jedno- i wielowymiarowe.
  • 🛠️. Trzy kroki: Każda tablica jest deklarowana i konstruowana za pomocą newi zainicjowano.
  • 🛡️ Sprawdzanie granic: JVM rzuca ArrayIndexOutOfBoundsException za ostatnim slotem.
  • ↩️ Przez odniesienie: Zmiany elementów dokonane wewnątrz metody są zachowywane dla osoby wywołującej.
  • 📏 Długość pola: Każda tablica ujawnia length dla bezpiecznej iteracji.

Tablice w Java

Co to jest Java Szyk?

A Java szyk to struktura o stałym rozmiarze, która przechowuje elementy jednego typu danych w ciągłej pamięci. Do każdego elementu można dotrzeć za pomocą indeksu zerowego, więc pierwszy element znajduje się na 0 i ostatni na length - 1. Tablice dziedziczą po Object i wdrożyć Serializable oraz Cloneablei może zawierać obiekty pierwotne lub odniesienia do obiektów.

Tablice zastępują długie ciągi zmiennych liczbowych. Rozważmy sześć niezależnych liczb całkowitych:

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

Te same sześć wartości znajduje się w pojedynczej tablicy o długości sześciu:

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

A pętla zmienna może sterować indeksem w nawiasach, więc trzy wiersze przetwarzają każdy element zamiast sześciu kopii:

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

Typy tablic w Java

Java tablice występują w dwóch kształtach:

  1. Tablica jednowymiarowa: płaska lista elementów.
  2. Tablica wielowymiarowa: tablica tablic, używana w siatkach i macierzach.

Zmienne tablicowe: deklaracja, konstrukcja i inicjalizacja

Korzystanie z tablicy to trzystopniowy proces:deklarować, konstruować z new, a następnie zainicjuj.

1) Zadeklaruj tablicę

Składnia:

<elementType>[] <arrayName>;

or (starsza forma w stylu C, nadal aktualna):

<elementType> <arrayName>[];

Przykład:

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

2) Zbuduj tablicę

Składnia:

arrayName = new dataType[size];

Przykład:

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

Deklaracja i konstrukcja połączone:

int[] intArray = new int[10];

3) Zainicjuj tablicę

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

Deklaracja i inicjalizacja w jednym kroku używając literału tablicowego:

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.

Pierwszy program tablicowy w Java

Krok 1) Skopiuj poniższy kod do edytora:

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;
    }
}

Krok 2) Zapisz, skompiluj i uruchom kod. Obserwuj wynik.

Oczekiwany wynik:

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

Krok 3) If x jest odniesieniem do tablicy, x.length Zwraca liczbę slotów. Odkomentuj pierwszy zakomentowany wiersz i uruchom ponownie:

Length of Array  =  7

Krok 4) W odróżnieniu od C. Java Sprawdza granice przy każdym dostępie do tablicy. Odkomentuj drugi zakomentowany wiersz i uruchom ponownie:

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

Krok 5) JVM rzuca ArrayIndexOutOfBoundsExceptionW języku C ten sam dostęp zwróciłby śmieci z sąsiedniej pamięci zamiast zakończyć się niepowodzeniem.

Java Tablica: przekazywanie przez referencję

Tablice są przekazywane do metod przez referencję. Metoda otrzymuje kopię referencji, więc zmiany elementów wprowadzone w metodzie są widoczne dla wywołującego.

Przykład: tablice są przekazywane przez referencję.

Krok 1) Skopiuj poniższy kod do edytora:

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]);
    }
}

Krok 2) Zapisz, skompiluj i uruchom kod. Obserwuj wynik.

Oczekiwany wynik:

Before Function Call    Apple
After Function Call    Changed

Tablice wielowymiarowe w Java

Tablice wielowymiarowe to tablice tablic. Dodaj kolejny zestaw nawiasów kwadratowych dla każdego wymiaru. Aby utworzyć dwuwymiarową siatkę liczb całkowitych z czterema wierszami i pięcioma kolumnami:

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

Wystarczy określić rozmiar tylko pierwszego (najbardziej wysuniętego na lewo) wymiaru. Pozostałe wymiary można przypisać osobno, a każdy wiersz może mieć swoją własną długość, co ułatwia Java Tablice 2-D są prawdziwe poszarpane tablice.

Przykład:

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] + " ");
    }
}

Oczekiwany wynik:

1

FAQ

A Java Tablica to kontener o stałym rozmiarze, który przechowuje elementy jednego typu danych. Dostęp do każdego elementu uzyskuje się za pomocą indeksu rozpoczynającego się od zera, a każda tablica udostępnia pole długości z liczbą slotów.

Zadeklaruj za pomocą int[] arr, utwórz za pomocą nowego int[size], a następnie przypisz według indeksu. Aby wykonać wszystkie trzy czynności w jednym wierszu, użyj literału, takiego jak int[] arr = {1, 2, 3, 4}.

Java Obsługuje tablice jednowymiarowe i wielowymiarowe. Tablica jednowymiarowa to płaska lista, a tablica wielowymiarowa to tablica tablic używana w tabelach, siatkach i macierzach.

Użyj pola długości, na przykład arr.length. Zwraca ono liczbę slotów i działa dla dowolnego typu tablicy. W przeciwieństwie do typu String, tablice udostępniają długość jako pole, a nie wywołanie metody.

JVM sprawdza granice przy każdym dostępie do tablicy. Odczyt lub zapis indeksu poniżej zera lub o długości równej lub większej od zera powoduje wyjątek ArrayIndexOutOfBoundsException, zapobiegając błędom związanym z uszkodzeniem pamięci, które są plagą języków C i C++.

Java Przekazuje argumenty przez wartość, ale w przypadku tablic wartość ta jest kopią referencji. Metoda działa na tej samej tablicy bazowej, więc zmiany elementów wewnątrz metody są widoczne dla wywołującego.

Asystenci kodu uczenia maszynowego rozpoznają wzorzec deklaracja-konstrukcja-inicjalizowanie oraz kompletne literały i pętle. Sygnalizują również typowe błędy typu „off-by-one”, które mogłyby zgłosić wyjątek ArrayIndexOutOfBoundsException w czasie wykonywania.

Tak. GitHub Copilot tworzy szkielet deklaracji tablic, pętli, wywołań Arrays.sort i przeglądania macierzy 2-D na podstawie komentarza w języku zwykłym. RevPrzed uruchomieniem programu na danych produkcyjnych sprawdź wygenerowane granice.

Podsumuj ten post następująco: