Arrays binnen Java

โšก Slimme samenvatting

Arrays binnen Java Het zijn op indexen gebaseerde containers met een vaste grootte die elementen van รฉรฉn gegevenstype in aaneengesloten geheugen opslaan, wat zorgt voor toegang in constante tijd, ingebouwde grenscontrole en een lengteveld. Dit maakt ze de basis voor de meeste standaardbibliotheekcollecties.

  • ???? Vaste maat: Een array bevat een vast aantal elementen van รฉรฉn enkel type.
  • ๐Ÿ”ข Nulgebaseerde index: Elementen lopen van 0 tot lengte min รฉรฉn.
  • ๐Ÿงฉ Twee types: Java Bevat eendimensionale en multidimensionale arrays.
  • ๏ธ Drie stappen: Elke array wordt gedeclareerd en geconstrueerd met newen geรฏnitialiseerd.
  • ๐Ÿ›ก๏ธ Grenscontrole: De JVM geeft een foutmelding. ArrayIndexOutOfBoundsException voorbij het laatste vakje.
  • ๏ธ Door middel van verwijzing: Elementwijzigingen die binnen een methode worden aangebracht, blijven behouden voor de aanroeper.
  • ๐Ÿ“ Lengteveld: Elke array toont length voor veilige iteratie.

Arrays binnen Java

Wat is een Java Array?

A Java reeks is een structuur met een vaste grootte die elementen van รฉรฉn gegevenstype in aaneengesloten geheugen opslaat. Elk element is bereikbaar via een index die begint bij nul, dus het eerste element bevindt zich op de eerste positie. 0 en de laatste bij length - 1Arrays erven van Object en implementeren Serializable en Cloneableen kan primitieve gegevenstypen of objectverwijzingen bevatten.

Arrays vervangen lange reeksen genummerde variabelen. Neem bijvoorbeeld zes onafhankelijke gehele getallen:

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

Dezelfde zes waarden bevinden zich in รฉรฉn enkele array met lengte zes:

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

A lus De variabele kan de index tussen haakjes aansturen, waardoor elk element in drie regels wordt verwerkt in plaats van zes kopieรซn:

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

Soorten Arrays in Java

Java Arrays bestaan โ€‹โ€‹in twee vormen:

  1. Eendimensionale array: een platte lijst van elementen.
  2. Multidimensionale array: Een array van arrays, gebruikt voor roosters en matrices.

Arrayvariabelen: declareren, construeren en initialiseren

Het gebruik van een array is een proces in drie stappen: declareren, construeren met newInitialiseer vervolgens.

1) Declareer de array

Syntax:

<elementType>[] <arrayName>;

or (de oudere C-stijl vorm, nog steeds geldig):

<elementType> <arrayName>[];

Voorbeeld:

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

2) Maak de array aan

Syntax:

arrayName = new dataType[size];

Voorbeeld:

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

Verklaring en constructie gecombineerd:

int[] intArray = new int[10];

3) Initialiseer de array

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

Declareer en initialiseer in รฉรฉn stap. een array-literal gebruiken:

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.

Eerste arrayprogramma in Java

Stap 1) Kopieer de volgende code naar een 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;
    }
}

Stap 2) Sla de code op, compileer deze en voer hem uit. Bekijk de uitvoer.

Verwachte resultaten:

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

Stap 3) If x is een array-referentie, x.length retourneert het aantal slots. Verwijder het commentaar bij de eerste regel en voer het programma opnieuw uit:

Length of Array  =  7

Stap 4) In tegenstelling tot C, Java Voert bij elke toegang tot de array een grenscontrole uit. Verwijder het commentaar bij de tweede regel en voer het programma opnieuw uit:

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

Stap 5) De JVM geeft een foutmelding. ArrayIndexOutOfBoundsExceptionIn C zou dezelfde toegang ongewenste gegevens uit het aangrenzende geheugen retourneren in plaats van een foutmelding te geven.

Java Array: Doorgeven via referentie

Arrays worden via een referentie aan methoden doorgegeven. De methode ontvangt een kopie van de referentie, waardoor wijzigingen aan elementen binnen de methode zichtbaar zijn voor de aanroeper.

Voorbeeld: arrays worden doorgegeven via referentie.

Stap 1) Kopieer de volgende code naar een 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]);
    }
}

Stap 2) Sla de code op, compileer deze en voer hem uit. Bekijk de uitvoer.

Verwachte resultaten:

Before Function Call    Apple
After Function Call    Changed

Multidimensionale arrays in Java

Multidimensionale arrays zijn arrays van arrays. Voeg voor elke dimensie een extra set vierkante haken toe. Om een โ€‹โ€‹2D-rooster met vier rijen en vijf kolommen te maken:

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

Je hoeft alleen de eerste (meest linkse) afmeting vooraf te bepalen. De overige afmetingen kunnen afzonderlijk worden toegewezen en elke rij kan zijn eigen lengte hebben, waardoor... Java 2D-arrays waar grillige arrays.

Voorbeeld:

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

Verwachte resultaten:

1

Veelgestelde vragen

A Java Een array is een container met een vaste grootte die elementen van รฉรฉn gegevenstype opslaat. Elk element wordt benaderd via een index die begint bij nul, en elke array heeft een lengteveld met het aantal elementen.

Declareer met int[] arr, construeer met new int[size] en wijs vervolgens toe op basis van index. Om dit alles in รฉรฉn regel te doen, gebruik je een letterlijke waarde zoals int[] arr = {1, 2, 3, 4}.

Java Ondersteunt eendimensionale en multidimensionale arrays. Een eendimensionale array is een platte lijst, en een multidimensionale array is een array van arrays die gebruikt worden voor tabellen, roosters en matrices.

Gebruik het veld `length`, bijvoorbeeld `arr.length`. Dit retourneert het aantal slots en werkt voor elk arraytype. In tegenstelling tot String, geven arrays de lengte weer als een veld, niet als een methodeaanroep.

De JVM controleert de grenzen van elke arraytoegang. Het lezen of schrijven van een index kleiner dan nul of gelijk aan of groter dan de lengte van de array genereert een ArrayIndexOutOfBoundsException, waardoor de geheugenbeschadigingsfouten die C teisteren, worden voorkomen. C++.

Java Argumenten worden doorgegeven via waarde, maar voor arrays is die waarde een kopie van de referentie. De methode werkt op dezelfde onderliggende array, waardoor wijzigingen aan elementen binnen de methode zichtbaar zijn voor de aanroeper.

Code-assistenten die gebruikmaken van machine learning herkennen het patroon van declareren-construeren-initialiseren en voltooien letterlijke waarden of lussen. Ze signaleren ook veelvoorkomende off-by-one-fouten die tijdens de uitvoering een ArrayIndexOutOfBoundsException zouden veroorzaken.

Ja. GitHub Copilot genereert arraydeclaraties, lussen, Arrays.sort-aanroepen en 2D-matrixdoorloopbewerkingen op basis van een commentaar in gewone taal. RevBekijk de gegenereerde grenzen voordat je ze op productiedata toepast.

Vat dit bericht samen met: