CodeGym /Java blog /Tilfældig /Arrays i Java
John Squirrels
Niveau
San Francisco

Arrays i Java

Udgivet i gruppen
Forestil dig skabe i et opbevaringsrum. Hver af dem har sit eget nummer, og hver af dem opbevarer et eller andet bagageobjekt. Eller et vinkort, hvor enhver slags vin er nummereret, og du bestiller ved at angive nummeret på din drink. Eller en liste over elever, hvor "Adams" er optaget i den første position og "Zimmer" er sidst. Eller en liste over passagerer på et fly, som hver er tildelt et nummereret sæde. I Java bruges arrays ofte til at arbejde med sådanne strukturer, dvs. sæt af homogene data.

Arrays i CodeGym kurset

På CodeGym begynder du at arbejde med arrays på niveau 7 i Java Syntax-questen. Tre lektioner er afsat til dem, samt 8 opgaver på forskellige niveauer for at konsolidere dine færdigheder i at arbejde med arrays. Men du vil støde på arrays mange gange i løbet af kurset (især Array-klassen vil blive studeret i Java Collections- questen og som en del af dit fremtidige arbejde.

Hvad er et array?

Et array er en datastruktur, der gemmer elementer af samme type. Du kan tænke på det som et sæt nummererede celler. Du kan lægge nogle data i hver celle (et dataelement pr. celle). En bestemt celle tilgås ved hjælp af dens nummer. Et elements nummer i arrayet kaldes også et indeks . I Java er et array homogent, dvs. alle dets celler indeholder elementer af samme type. Således indeholder en matrix af heltal kun heltal ( int ), en matrix af strenge - kun strenge, og en matrix af forekomster af en Dog- klasse, som vi har oprettet, vil kun indeholde Dog- objekter. Med andre ord vil Java ikke lade os sætte et heltal i den første celle i arrayet, en streng i den anden og en hund i den tredje.Arrays i Java - 2

Erklærer et array

Hvordan erklærer man et array?

Som enhver variabel skal et array erklæres i Java. Dette kan gøres på en af ​​to måder. De er ækvivalente, men den første måde er mere i overensstemmelse med Java-stil. Den anden er en arv fra C-sproget: mange C-programmører skiftede til Java, og en alternativ metode blev bevaret for deres bekvemmelighed. Tabellen viser begge måder at erklære et array på i Java:
Ingen. Erklæring af et array, Java-syntaks Eksempler Kommentar
1.
dataType[] arrayName;

int[] myArray;

Object[] 
arrayOfObjects;  
Det er tilrådeligt at erklære et array på denne måde. Dette er Java-stil.
2.
dataType arrayName[];

int myArray[];

Object 
arrayOfObjects[];
Array-deklarationsmetode arvet fra C/C++, virker i Java
I begge tilfælde er dataType typen af ​​variablerne i arrayet. I eksemplerne erklærede vi to arrays. Den ene vil gemme int s, og den anden — Objektobjekter . En array-deklaration har således et navn og en type (typen af ​​arrayets elementer). ArrayName er navnet på arrayet.

Oprettelse af et array

Hvordan opretter du et array?

Som ethvert andet objekt kan du oprette et Java-array, dvs. reservere en plads i hukommelsen til det ved hjælp af den nye operator. Sådan gøres det:

new typeOfArray[length]; 
hvor typeOfArray er arrayets type og længde er dens længde (dvs. antallet af celler) udtrykt som et helt tal ( int). Men bemærk, at her har vi kun tildelt hukommelse til arrayet - vi har ikke forbundet det erklærede array med nogen tidligere erklæret variabel. Normalt er en matrix først erklæret og derefter instansieret, for eksempel:

int[] myArray; // Array declaration
myArray = new int[10]; // Create (allocate memory for) an array of 10 ints
Her oprettede vi et array af heltal kaldet myArray , og informerede compileren om, at det består af 10 celler (som hver vil indeholde et heltal). Det er dog meget mere almindeligt at bruge følgende forkortede syntaks til at oprette et array med det samme, når det erklæres:

int[] myArray = new int [10]; // Declare the array and allocate memory "in one blow"
Bemærk venligst:Når en matrix er oprettet ved hjælp af den nye operator, indeholder dens celler standardværdier. For numeriske typer (som i vores eksempel) er standardværdien 0, for den boolske type er den falsk , og for referencetyper er den null . Altså efter at have udført denne erklæring

int[] myArray = new int[10];
vi får en matrix på ti heltal, og indtil programmet gør noget for at ændre værdierne, indeholder hver celle 0.

Du kan finde mere information om arrays i artiklen " Noget om arrays "

Array længde i Java

Som vi sagde ovenfor, er længden af ​​et array antallet af elementer, som arrayet er designet til at indeholde. Længden af ​​et array kan ikke ændres, efter at det er oprettet. Bemærk venligstat array-elementer er nummereret fra nul i Java. Således, hvis vi har en matrix med 10 elementer, så er indekset for det første element 0 og indekset for det sidste er 9. Arrays i Java - 3Du kan få matrixlængden ved at bruge længdevariablen . For eksempel:

int[] myArray = new int[10]; // Create an int array for 10 elements and name it myArray
System.out.println(myArray.length); // Display the array's length, i.e. the number of elements we can put into the array
Produktion:

10

Initialisering af et array og adgang til dets elementer

Nu ved vi, hvordan man opretter et array i Java. Processen giver os ikke et tomt array, men et array fyldt med standardværdier. For et int- array er dette for eksempel 0, og hvis vi har et array af en hvilken som helst referencetype, så er standarden i hver celle null . Vi får adgang til et array-element (for eksempel for at indstille dets værdi, vise det på skærmen eller udføre en operation med det) ved dets indeks. Array-initialisering er processen med at fylde et array med specifikke værdier (ud over standardværdien). Eksempel: lad os oprette en string-array for de 4 sæsoner og udfylde den med navnene på årstiderne.

String[] seasons = new String[4]; /* Declare and create an array. Java allocates memory for an array of 4 strings, and each cell is set to null (since String is a reference type) */ 

seasons[0] = "Winter"; /* We set the first cell, i.e. the cell with index zero, to "Winter". Here we access the zeroth element of the array and write a specific value to it. */ 
seasons[1] = "Spring"; // We follow a similar procedure for the cell with index 1 (the second cell)
seasons[2] = "Summer"; // ... index 2
seasons[3] = "Autumn"; // and finally, index 3
Nu er årstidernes navne skrevet til de fire celler i vores array. Vi kunne initialisere arrayet på en anden måde ved at kombinere erklæringen og initialiseringen:

String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Desuden kan den nye operatør udelades:

String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};

Hvordan viser du et array på skærmen i Java?

Du kan vise array-elementer på skærmen (dvs. på konsollen) ved hjælp af en for- løkke. En anden, kortere måde at vise et array på vil blive diskuteret i afsnittet med titlen " Nyttige metoder til at arbejde med arrays ". I mellemtiden kan du tage et kig på dette eksempel, hvor et array vises ved hjælp af en loop:

String[] seasons = new String {"Winter", "Spring", "Summer", "Autumn"}; 
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]); 
}
Programmet vil vise følgende:

Winter 
Spring 
Summer 
Autumn

Endimensionelle og multidimensionelle arrays i Java

Men hvad nu hvis vi ikke ønsker at skabe en række af tal, strenge eller andre objekter, men snarere en række af arrays? Java lader dig gøre dette. Den slags array, vi allerede er bekendt med ( int[] myArray = new int[8] ) er kendt som en endimensionel array. Men et array af arrays kaldes et todimensionelt array. Det er ligesom en tabel, der har et rækkenummer og et kolonnenummer. Eller, hvis du har lært det grundlæggende i lineær algebra, kan du tænke på det som en matrix. Arrays i Java - 4Hvorfor har vi brug for sådanne arrays? Nå, at programmere matricer og tabeller, samt andre objekter, der har en lignende struktur. For eksempel kan et skakbræt repræsenteres af et 8x8-array. Et multidimensionelt array erklæres og oprettes som følger:

Int[][] myTwoDimentionalArray = new int[8][8];
Dette array har præcis 64 elementer: myTwoDimentionalArray[0][0] , myTwoDimentionalArray[0][1] , myTwoDimentionalArray[1][0] , myTwoDimentionalArray[1][1] og så videre op til myTwoDimentionalArray[7][7] . Så hvis vi bruger det til at repræsentere et skakbræt, så svarer A1 til myTwoDimentionalArray[0][0] og E2 svarer til myTwoDimentionalArray[4][1] . Men hvor langt kan vi skubbe dette? I Java kan du angive et array af arrays... et array af arrays af arrays, og så videre. Selvfølgelig bruges tredimensionelle og højere-dimensionelle arrays meget sjældent. Når det er sagt, kan du bruge et tredimensionelt array til at programmere en Rubiks terning, for eksempel.

Nyttige metoder til at arbejde med arrays

Java har klassen java.util.Arrays til at arbejde med arrays. Generelt er de mest almindelige operationer, der udføres på arrays, initialisering (fyldning med elementer), hentning af et element (ved indeks), sortering og søgning. Søgning og sortering af arrays er emner for en anden dag. På den ene side er det god praksis selv at skrive flere søge- og sorteringsalgoritmer. På den anden side er alle de bedste algoritmer allerede implementeret og inkluderet i standard Java-biblioteker, og du kan lovligt bruge dem. Her er tre nyttige metoder i denne klasse.

Sortering af et array

Metoden void sort(int[] myArray, int fromIndex, int toIndex) sorterer et heltalsarray eller underarray i stigende rækkefølge.

Søger efter et element i et array

int binær søgning(int[] mitArray, int fraIndex, int tilIndex, int nøgle) . Denne metode leder efter nøgleelementet i et sorteret myArray- array eller subarray, fra fromIndex til toIndex . Hvis varen bliver fundet, returnerer den sit indeks. Ellers returnerer den (-fromIndex)-1 .

Konvertering af et array til en streng

Metoden String toString(int[] myArray) konverterer en matrix til en streng. I Java tilsidesætter arrays ikke toString() . Dette betyder, at hvis du prøver at vise en hel matrix på én gang (System.out.println(myArray)) i stedet for ét element ad gangen som i afsnittet med titlen " Vis en matrix på skærmen ", får du navnet på klassen og arrayets hexadecimale hash (defineret af Object.toString() ). Hvis du er nybegynder, forstår du måske ikke forklaringen om toString- metoden. I første omgang behøver du ikke, men ved at bruge denne metode bliver det nemmere at vise en matrix. Java lader dig nemt vise et array uden at bruge en loop. Eksemplet nedenfor viser dette.

Et eksempel ved hjælp af sort, binarySearch og toString

Lad os skabe en matrix af heltal, vise den ved hjælp af toString , sortere den ved hjælp af sorteringsmetoden og derefter finde et tal i den.

class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; // Declare and initialize the array
        System.out.println(array); // Try to display our array without using the toString method — the result is a hexadecimal number
        System.out.println(Arrays.toString(array)); // Display the array correctly 
        Arrays.sort(array, 0, 4); // Sort the entire array from the zeroth to the fourth element
        System.out.println(Arrays.toString(array)); // Display the sorted array
        int key = Arrays.binarySearch(array, 5); // Look for the number 5 in the sorted array. 
        // The binarySearch method will return the index of the array element we are searching for
        System.out.println(key); // Display the index of the number we searched for 
System.out.println(Arrays.binarySearch(array, 0)); // Now try to find a number that isn't in the array, 
        // and immediately display the result

    }
}
Produktion:

[I@1540e19d 
[1, 5, 4, 3, 7] 
[1, 3, 4, 5, 7] 
3 
-1
Den første streng er et forsøg på at vise arrayet uden at bruge toString . Den anden er arrayet, der vises ved hjælp af toString . Den tredje er den sorterede matrix. Den fjerde er indekset for det tal, vi søgte efter (5) i det sorterede array (husk at vi tæller fra nul, så indekset for arrayets fjerde element er 3). I den femte streng ser vi -1. Dette er et ugyldigt matrixindeks. Det signalerer, at det tal, vi søgte efter (i dette tilfælde 0), ikke er i arrayet.

Mere om metoder i Array-klassen

Arrays-klassen og dens brug — Denne artikel beskriver nogle metoder i Array-klassen
Arrays-klassen har 18 vigtige metoder til at arbejde med arrays

Arrays i en nøddeskal

  • Væsentlige egenskaber ved et array: typen af ​​de data, der er placeret i det, dets navn og dets længde.
    Den sidste egenskab bestemmes, når arrayet oprettes (når hukommelse er allokeret til arrayet). De to første egenskaber bestemmes, når arrayet erklæres.

  • Matrixstørrelsen (antal celler) skal være en int

  • Det er umuligt at ændre længden af ​​et array, efter det er oprettet.

  • Et array-element kan tilgås af dets indeks.

  • Elementer i arrays, som alt andet i Java, er nummereret fra nul.

  • Når et array er oprettet, er det fyldt med standardværdier.

  • Arrays i Java er ikke det samme som array i C++. De er næsten som pointere til dynamiske arrays.

Nyttige materialer om arrays

Vil du vide mere om arrays? Tjek artiklerne herunder. Der er en masse interessant og nyttigt materiale om dette emne.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION