1. String
array
Jeg vil gerne give dig et kort overblik over String
arrays.
Som vi sagde tidligere, kan et array være af enhver type. Det betyder, at du kan oprette en række String
s. Hvis vi ville skrive et program, der "læser 10 linjer fra tastaturet og viser dem i omvendt rækkefølge," her er, hvordan koden ville se ud:
|
Opret et Scanner objekt Opret et 10-element array objekt Loop fra 0 til 9 Læs en streng fra tastaturet og gem den i næste celle i matrixen Loop fra 9 til 0 Vis den næste celle i matrixen |
Koden ændrede sig næsten ikke! Vi skulle kun erstatte int
med, String
da vi oprettede arrayet. Nå, og når vi læste strengen fra tastaturet, erstattede vi også metoden nextInt()
med nextLine()
.
2. String
array i hukommelsen
Og endnu et nyttigt faktum. Lad os overveje 3 billeder:
Billede 1. Sådan String
er et objekt arrangeret i hukommelsen:
Dette billede er taget fra tidligere lektioner.
Bemærk venligst, at teksten i strengen ikke er gemt direkte i variablen: en separat hukommelsesblok er allokeret til den. En String
variabel gemmer adressen (referencen) til et objekt, der gemmer teksten.
Billede 2. Hvordan et heltalsarray er arrangeret i hukommelsen:
Dette billede er også kendt.
Billede 3. Sådan er et strengarray arrangeret i hukommelsen:
Til venstre ser vi en array-variabel, hvis type er String[]
(den gemmer adressen på et array-objekt).
I midten har vi String
selve array-objektet.
Og til højre er strengobjekter, der gemmer noget tekst.
Cellerne i String
arrayet gemmer ikke selve strengene (teksten i String-objekterne). I stedet gemmer de deres adresser (referencer til dem). På samme måde som String
variabler gemmer adresserne på strengobjekter (hvor teksten er gemt).
Tag dette i betragtning, når du sammenligner matrixceller:
|
Opret et array med 10 strenge Sæt værdier i arrayet false (referencerne er ens) false (referencerne er ikke ens)true (strengene er ens) true (strengene er stadig ens) |
3. Hurtig array-initialisering i Java
Arrays er super nyttige, så Javas skabere forsøgte at gøre arbejdet med dem så bekvemt som muligt.
Den første ting, de gjorde, var at forenkle array-initialisering, den proces, hvorved du angiver startværdierne for et array.
Foruden data læst et sted fra, har et program jo også ret ofte brug for sine egne interne data for at fungere. Antag for eksempel, at vi skal gemme længden af hver måned i et array. Sådan kan koden se ud:
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
Men takket være Javas skabere er der en måde at skrive dette mere kortfattet på:
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Du kan blot liste alle værdierne af arrayet, adskilt af kommaer!
Praktisk, ikke? Men det er ikke alt.
Som det sker, kan compileren bestemme typen af beholderen (array-objektet) baseret på typen af værdierne for arrayet. Og for at bestemme længden af arrayet er det trivielt at tælle antallet af elementer skrevet i de krøllede seler.
Det betyder, at denne kode kan skrives endnu kortere:
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
En ting af skønhed, ikke? 🙂
Dette kaldes "hurtig array-initialisering". Det virker forresten for andre typer end int
...
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};
GO TO FULL VERSION