Arrayer in Java

โšก Smart sammanfattning

Arrayer in Java รคr indexbaserade containrar med fast storlek som lagrar element av en datatyp i sammanhรคngande minne, vilket ger รฅtkomst i konstant tid, inbyggd grรคnskontroll och ett lรคngdfรคlt som gรถr dem till grunden fรถr de flesta standardbibliotekssamlingar.

  • ๐Ÿ“ฆ Fast storlek: En array innehรฅller ett visst antal element av en enda typ.
  • ๐Ÿ”ข Nollbaserat index: Elementen lรถper frรฅn 0 till lรคngden minus ett.
  • ๐Ÿงฉ Tvรฅ typer: Java har endimensionella och flerdimensionella matriser.
  • ๐Ÿ› ๏ธ Tre steg: Varje array deklareras, konstrueras med newoch initialiserad.
  • ๐Ÿ›ก๏ธ Grรคnskontroll: JVM-kasten ArrayIndexOutOfBoundsException fรถrbi den sista luckan.
  • โ†ฉ๏ธ Med hรคnvisning: Elementรคndringar gjorda inuti en metod sparas fรถr anroparen.
  • ๐Ÿ“ Lรคngdfรคlt: Varje array exponerar length fรถr sรคker iteration.

Arrayer in Java

Vad รคr en Java Array?

A Java array รคr en struktur med fast storlek som lagrar element av en datatyp i sammanhรคngande minne. Varje element nรฅs av ett nollbaserat index, sรฅ det fรถrsta sitter vid 0 och den sista kl. length - 1. Arrayer รคrver frรฅn Object och implementera Serializable och Cloneable, och kan innehรฅlla primitiver eller objektreferenser.

Matriser ersรคtter lรฅnga serier av numrerade variabler. Betrakta sex oberoende heltal:

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

Samma sex vรคrden finns i en enda array med lรคngden sex:

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

A slinga variabeln kan styra indexet inom parenteser, sรฅ tre rader bearbetar varje element istรคllet fรถr sex kopior:

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

Typer av Array i Java

Java arrayer finns i tvรฅ former:

  1. Endimensionell array: en platt lista med element.
  2. Flerdimensionell array: en array av arrayer, som anvรคnds fรถr rutnรคt och matriser.

Arrayvariabler: Deklarera, konstruera och initiera

Att anvรคnda en array รคr en tre stegs processdeklarera, konstruera med new, och initialisera sedan.

1) Deklarera arrayen

Syntax:

<elementType>[] <arrayName>;

or (den รคldre C-formen, fortfarande giltig):

<elementType> <arrayName>[];

Exempel:

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

2) Konstruera arrayen

Syntax:

arrayName = new dataType[size];

Exempel:

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

Deklaration och tolkning kombinerade:

int[] intArray = new int[10];

3) Initiera arrayen

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

Deklarera och initiera i ett steg med hjรคlp av en arrayliteral:

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รถrsta arrayprogrammet i Java

Steg 1) Kopiera fรถljande kod till 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;
    }
}

Steg 2) Spara, kompilera och kรถr koden. Observera utdata.

Fรถrvรคntad produktion:

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

Steg 3) If x รคr en arrayreferens, x.length returnerar dess slot count. Avkommentera den fรถrsta kommenterade raden och kรถr om:

Length of Array  =  7

Steg 4) Till skillnad frรฅn C, Java bounds-kontrollerar varje arrayรฅtkomst. Avkommentera den andra kommenterade raden och kรถr om:

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

Steg 5) JVM-kasten ArrayIndexOutOfBoundsExceptionI C skulle samma รฅtkomst returnera skrรคp frรฅn intilliggande minne istรคllet fรถr att misslyckas.

Java Array: Skicka via referens

Arrayer skickas till metoder via referens. Metoden tar emot en kopia av referensen, sรฅ elementรคndringar som gรถrs inuti metoden รคr synliga fรถr anroparen.

Exempel: arrayer skickas via referens.

Steg 1) Kopiera fรถljande kod till 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]);
    }
}

Steg 2) Spara, kompilera och kรถr koden. Observera utdata.

Fรถrvรคntad produktion:

Before Function Call    Apple
After Function Call    Changed

Flerdimensionella arrayer i Java

Flerdimensionella arrayer รคr arrayer av arrayer. Lรคgg till ytterligare en uppsรคttning hakparenteser fรถr varje dimension. Sรฅ hรคr skapar du ett 2D-heltalsrutnรคt med fyra rader och fem kolumner:

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

Du behรถver bara justera storleken pรฅ den fรถrsta (vรคnstra) mรฅtten lรคngst fram. De รฅterstรฅende mรฅtten kan tilldelas separat, och varje rad kan ha sin egen lรคngd, vilket gรถr Java 2D-matriser sanna taggiga matriser.

Exempel:

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

Fรถrvรคntad produktion:

1

Vanliga frรฅgor

A Java en array รคr en container med fast storlek som lagrar element av en datatyp. Varje element nรฅs via ett nollbaserat index, och varje array exponerar ett lรคngdfรคlt med antalet platser.

Deklarera med int[] arr, konstruera med new int[size], tilldela sedan med index. Fรถr att gรถra alla tre pรฅ en rad, anvรคnd en literal som int[] arr = {1, 2, 3, 4}.

Java stรถder endimensionella och flerdimensionella arrayer. En endimensionell array รคr en platt lista, och en flerdimensionell array รคr en array av arrayer som anvรคnds fรถr tabeller, rutnรคt och matriser.

Anvรคnd lรคngdfรคltet, till exempel arr.length. Det returnerar antalet platser och fungerar fรถr alla arraytyper. Till skillnad frรฅn String exponerar arrayer lรคngd som ett fรคlt, inte ett metodanrop.

JVM-grรคnskontrollerar varje arrayรฅtkomst. Att lรคsa eller skriva ett index under noll eller vid eller รถver lรคngden utlรถser ArrayIndexOutOfBoundsException, vilket fรถrhindrar minneskorruptionsbuggar som plรฅgar C och C++.

Java skickar argument efter vรคrde, men fรถr arrayer รคr det vรคrdet en kopia av referensen. Metoden agerar pรฅ samma underliggande array, sรฅ elementรคndringar inuti metoden รคr synliga fรถr anroparen.

Maskininlรคrningskodassistenter kรคnner igen declare-construct-initialise-mรถnstret och kompletterar literaler eller loopar. De flaggar ocksรฅ vanliga off-by-one-fel som skulle utlรถsa ArrayIndexOutOfBoundsException vid kรถrning.

Ja. GitHub Copilot skapar arraydeklarationer, loopar, Arrays.sort-anrop och 2D-matrispromenader frรฅn en kommentar i vanligt sprรฅk. RevVisa de genererade grรคnserna innan du kรถr mot produktionsdata.

Sammanfatta detta inlรคgg med: