Matrice în Java

⚡ Rezumat inteligent

Matrice în Java sunt containere cu dimensiune fixă, bazate pe index, care stochează elemente de un singur tip de date în memoria contiguă, oferind acces în timp constant, verificare încorporată a limitelor și un câmp de lungime, ceea ce le face fundamentul pentru majoritatea colecțiilor standard de biblioteci.

  • 📦 Dimensiune fixă: Un tablou conține un număr stabilit de elemente de același tip.
  • 🔢 Index cu bază zero: Elementele se desfășoară de la 0 până la lungimea minus unu.
  • 🧩 Doua tipuri: Java are matrici unidimensionale și multidimensionale.
  • 🛠️ Trei pasi: Fiecare matrice este declarată, construită cu newși inițializat.
  • 🛡️ Verificarea limitelor: JVM-ul aruncă ArrayIndexOutOfBoundsException după ultimul slot.
  • ↩️ Prin referință: Modificările elementelor făcute în interiorul unei metode persistă pentru apelant.
  • 📏 Câmp de lungime: Fiecare matrice expune length pentru o iterație sigură.

Matrice în Java

Ce este un Java Matrice?

A Java mulțime este o structură cu dimensiune fixă ​​care stochează elemente de un tip de date în memoria contiguă. Fiecare element este accesat printr-un index cu bază zero, deci primul se află la 0 și ultimul la length - 1. Tablourile moștenesc de la Object și implementați Serializable și Cloneableși poate conține primitive sau referințe la obiecte.

Tablourile înlocuiesc serii lungi de variabile numerotate. Luați în considerare șase numere întregi independente:

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

Aceleași șase valori se află într-o singură matrice de lungime șase:

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

A buclă variabila poate conduce indexul dintre paranteze, astfel încât trei linii procesează fiecare element în loc de șase copii:

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

Tipuri de matrice în Java

Java Matricele au două forme:

  1. Matrice unidimensională: o listă plată de elemente.
  2. Matrice multidimensională: o matrice de matrice, utilizată pentru grile și matrice.

Variabile Array: Declarare, Construcție și Inițializare

Utilizarea unei matrice este o proces în trei pași: declară, construiește cu new, apoi inițializați.

1) Declarați matricea

Sintaxă:

<elementType>[] <arrayName>;

or (forma mai veche în stil C, încă valabilă):

<elementType> <arrayName>[];

Exemplu:

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

2) Construiți matricea

Sintaxă:

arrayName = new dataType[size];

Exemplu:

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

Declarație și interpretare combinate:

int[] intArray = new int[10];

3) Inițializați matricea

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

Declarare și inițializare într-un singur pas folosind un literal de matrice:

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.

Primul program Array din Java

Pas 1) Copiați următorul cod într-un editor:

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

Pas 2) Salvați, compilați și rulați codul. Observați rezultatul.

Ieșire preconizată:

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

Pas 3) If x este o referință la o matrice, x.length returnează numărul de sloturi. Decomentați prima linie comentată și rulați din nou:

Length of Array  =  7

Pas 4) Spre deosebire de C, Java verifică limitele pentru fiecare acces la matrice. Decomentați a doua linie comentată și rulați din nou:

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

Pas 5) JVM-ul aruncă ArrayIndexOutOfBoundsExceptionÎn C, același acces ar returna erori din memoria adiacentă în loc să eșueze.

Java Matrice: Transmitere prin referință

Tablourile sunt transmise metodelor prin referință. Metoda primește o copie a referinței, astfel încât modificările elementelor făcute în interiorul metodei sunt vizibile apelantului.

Exemplu: tablourile sunt transmise prin referință.

Pas 1) Copiați următorul cod într-un editor:

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

Pas 2) Salvați, compilați și rulați codul. Observați rezultatul.

Ieșire preconizată:

Before Function Call    Apple
After Function Call    Changed

Matrici multidimensionale în Java

Tablourile multidimensionale sunt tablouri de tablouri. Adăugați un alt set de paranteze pătrate pentru fiecare dimensiune. Pentru a crea o grilă bidimensională de numere întregi cu patru rânduri și cinci coloane:

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

Trebuie doar să dimensionați prima dimensiune (cea mai din stânga) din față. Dimensiunile rămase pot fi alocate separat, iar fiecare rând poate avea propria lungime, ceea ce face ca Java Matrici 2-D adevărate matrice zimțate.

Exemplu:

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

Ieșire preconizată:

1

Întrebări frecvente

A Java Un array este un container de dimensiune fixă ​​care stochează elemente de un anumit tip de date. Fiecare element este accesat printr-un index cu bază zero, iar fiecare array expune un câmp de lungime cu numărul de sloturi.

Se declară cu int[] arr, se construiește cu new int[size], apoi se atribuie după index. Pentru a face toate trei într-o singură linie, se folosește un literal precum int[] arr = {1, 2, 3, 4}.

Java acceptă tablouri unidimensionale și multidimensionale. Un tablou unidimensional este o listă plată, iar un tablou multidimensional este un tablou de tablouri utilizat pentru tabele, grile și matrici.

Folosește câmpul „length”, de exemplu arr.length. Acesta returnează numărul de sloturi și funcționează pentru orice tip de matrice. Spre deosebire de String, matricele expun lungimea ca un câmp, nu ca un apel de metodă.

JVM verifică limitele pentru fiecare acces la matrice. Citirea sau scrierea unui index sub zero sau la o lungime egală sau mai mare generează o excepție ArrayIndexOutOfBoundsException, prevenind erorile de corupere a memoriei care afectează limbajele C și C++.

Java transmite argumentele după valoare, dar pentru tablouri acea valoare este o copie a referinței. Metoda acționează asupra aceluiași tablou subiacent, astfel încât modificările elementelor din interiorul metodei sunt vizibile apelantului.

Asistenții de cod pentru învățarea automată recunosc modelul declarare-construcție-inițializare și completează literali sau bucle. De asemenea, aceștia semnalează erorile comune de tip „off-by-one” care ar genera o excepție ArrayIndexOutOfBoundsException la momentul execuției.

Da. GitHub Copilot schelează declarațiile de matrice, buclele, apelurile Arrays.sort și parcurgerea matricelor 2-D dintr-un comentariu în limbaj simplu. RevVizualizați limitele generate înainte de a rula împotriva datelor de producție.

Rezumați această postare cu: