Arrays i Java

โšก Smart opsummering

Arrays i Java er indeksbaserede containere med fast stรธrrelse, der lagrer elementer af รฉn datatype i sammenhรฆngende hukommelse, hvilket giver adgang i konstant tid, indbygget grรฆnsekontrol og et lรฆngdefelt, der gรธr dem til fundamentet for de fleste standardbibliotekssamlinger.

  • ๐Ÿ“ฆ Fast stรธrrelse: Et array indeholder et bestemt antal elementer af en enkelt type.
  • ๐Ÿ”ข Nulbaseret indeks: Elementer gรฅr fra 0 til lรฆngden minus en.
  • ๐Ÿงฉ To typer: Java har endimensionelle og flerdimensionelle arrays.
  • ๐Ÿ› ๏ธ Tre trin: Hvert array erklรฆres, konstrueres med newog initialiseret.
  • ๐Ÿ›ก๏ธ Kontrol af grรฆnser: JVM'en kaster ArrayIndexOutOfBoundsException forbi det sidste slot.
  • โ†ฉ๏ธ Ved reference: Elementรฆndringer foretaget i en metode bevares for den, der kalder.
  • ๐Ÿ“ Lรฆngdefelt: Hvert array eksponerer length for sikker iteration.

Arrays i Java

Hvad er en Java Array?

A Java matrix er en struktur med fast stรธrrelse, der lagrer elementer af รฉn datatype i sammenhรฆngende hukommelse. Hvert element nรฅs af et nulbaseret indeks, sรฅ det fรธrste sidder ved 0 og den sidste kl. length - 1Arrays arver fra Object og implementere Serializable og Cloneable, og kan indeholde primitiver eller objektreferencer.

Arrays erstatter lange serier af nummererede variabler. Betragt seks uafhรฆngige heltal:

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

De samme seks vรฆrdier findes i et enkelt array med lรฆngden seks:

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

A loop Variablen kan styre indekset i parentes, sรฅ tre linjer behandler hvert element i stedet for seks kopier:

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

Typer af Array i Java

Java Arrays findes i to former:

  1. Endimensionelt array: en flad liste af elementer.
  2. Flerdimensionelt array: et array af arrays, der bruges til gitre og matricer.

Arrayvariabler: Deklarer, konstruer og initialiser

Brug af et array er en tretrins proceserklรฆre, konstruere med new, og initialiser derefter.

1) Deklarer arrayet

Syntaks:

<elementType>[] <arrayName>;

or (den รฆldre C-formular, stadig gyldig):

<elementType> <arrayName>[];

Eksempel:

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

2) Konstruer arrayet

Syntaks:

arrayName = new dataType[size];

Eksempel:

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

Erklรฆring og fortolkning kombineret:

int[] intArray = new int[10];

3) Initialiser arrayet

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

Deklarer og initialiser i รฉt trin ved hjรฆlp af en array-literal:

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.

Fรธrste array-program i Java

Trin 1) Kopier fรธlgende kode ind i en 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;
    }
}

Trin 2) Gem, kompiler og kรธr koden. Observer outputtet.

Forventet output:

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

Trin 3) If x er en array-reference, x.length returnerer dens slot count. Fjern kommentaren fra den fรธrste kommenterede linje og kรธr igen:

Length of Array  =  7

Trin 4) I modsรฆtning til C, Java bounds-tjekker hver array-adgang. Fjern kommentaren fra den anden kommenterede linje og kรธr igen:

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

Trin 5) JVM'en kaster ArrayIndexOutOfBoundsExceptionI C ville den samme adgang returnere affald fra tilstรธdende hukommelse i stedet for at fejle.

Java Array: Videregiv reference

Arrays sendes til metoder via reference. Metoden modtager en kopi af referencen, sรฅ elementรฆndringer foretaget i metoden er synlige for den, der kalder.

Eksempel: arrays sendes via reference.

Trin 1) Kopier fรธlgende kode ind i en 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]);
    }
}

Trin 2) Gem, kompiler og kรธr koden. Observer outputtet.

Forventet output:

Before Function Call    Apple
After Function Call    Changed

Flerdimensionelle arrays i Java

Flerdimensionelle arrays er arrays af arrays. Tilfรธj et ekstra sรฆt firkantede parenteser for hver dimension. Sรฅdan opretter du et 2D-heltalgitter med fire rรฆkker og fem kolonner:

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

Du behรธver kun at justere stรธrrelsen pรฅ den fรธrste (venstre) dimension forrest. De resterende dimensioner kan tildeles separat, og hver rรฆkke kan have sin egen lรฆngde, hvilket gรธr det muligt Java 2D-arrays sande takkede arrays.

Eksempel:

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

Forventet output:

1

Ofte Stillede Spรธrgsmรฅl

A Java Et array er en container med fast stรธrrelse, der lagrer elementer af รฉn datatype. Hvert element tilgรฅs via et nulbaseret indeks, og hvert array eksponerer et lรฆngdefelt med slotantallet.

Deklarer med int[] arr, konstruer med new int[size], og tildel derefter via indeks. For at gรธre alle tre pรฅ รฉn linje, brug en literal sรฅsom int[] arr = {1, 2, 3, 4}.

Java understรธtter endimensionelle og flerdimensionelle arrays. Et endimensionelt array er en flad liste, og et flerdimensionelt array er et array af arrays, der bruges til tabeller, gitre og matricer.

Brug lรฆngdefeltet, for eksempel arr.length. Det returnerer antallet af slots og fungerer for alle arraytyper. I modsรฆtning til String eksponerer arrays lรฆngde som et felt, ikke et metodekald.

JVM'en grรฆnsekontrollerer enhver array-adgang. Lรฆsning eller skrivning af et indeks under nul eller pรฅ eller over lรฆngden udlรธser ArrayIndexOutOfBoundsException, hvilket forhindrer de hukommelseskorruptionsfejl, der plager C og C++.

Java sender argumenter efter vรฆrdi, men for arrays er denne vรฆrdi en kopi af referencen. Metoden virker pรฅ det samme underliggende array, sรฅ elementรฆndringer i metoden er synlige for den, der kalder den.

Maskinlรฆringskodeassistenter genkender declare-construct-initialise-mรธnsteret og fuldfรธrer literals eller loops. De markerer ogsรฅ almindelige off-by-one-fejl, der ville udlรธse ArrayIndexOutOfBoundsException under kรธrsel.

Ja. GitHub Copilot scaffolder array-deklarationer, loops, Arrays.sort-kald og 2D-matrixwalks fra en kommentar i letforstรฅeligt sprog. RevSe de genererede grรฆnser, fรธr du kรธrer mod produktionsdata.

Opsummer dette indlรฆg med: