Array nel corso CodeGym Su CodeGym, inizi a lavorare con gli array al livello 7 della ricerca Java Syntax. A loro sono dedicate tre lezioni e 8 compiti su vari livelli per consolidare le tue abilità lavorando con gli array. Ma incontrerai gli array molte volte durante il corso (in particolare, la classe Array sarà studiata nella ricerca Java Collections e come parte del tuo lavoro futuro. |
Cos'è un array?
Un array è una struttura dati che memorizza elementi dello stesso tipo. Puoi pensarlo come un insieme di celle numerate. Puoi inserire alcuni dati in ogni cella (un elemento di dati per cella). Si accede a una cella specifica utilizzando il suo numero. Il numero di un elemento nell'array è anche chiamato index . In Java un array è omogeneo, cioè tutte le sue celle contengono elementi dello stesso tipo. Pertanto, un array di numeri interi contiene solo numeri interi ( int ), un array di stringhe — solo stringhe e un array di istanze di una classe Dog che abbiamo creato conterrà solo oggetti Dog . In altre parole, Java non ci consente di inserire un numero intero nella prima cella dell'array, una stringa nella seconda e un cane nella terza.
Dichiarare un array
Come si dichiara un array?
Come ogni variabile, un array deve essere dichiarato in Java. Questo può essere fatto in due modi. Sono equivalenti, ma il primo modo è più coerente con lo stile Java. Il secondo è un'eredità del linguaggio C: molti programmatori C sono passati a Java e per loro comodità è stato mantenuto un metodo alternativo. La tabella mostra entrambi i modi di dichiarare un array in Java:NO. | Dichiarazione di un array, sintassi Java | Esempi | Commento |
---|---|---|---|
1. |
tipodidati[] nomearray; |
|
È consigliabile dichiarare un array in questo modo. Questo è in stile Java. |
2. |
dataType arrayName[]; |
|
Metodo di dichiarazione di array ereditato da C/C++, funziona in Java |
Creazione di un array
Come si crea un array?
Come qualsiasi altro oggetto, puoi creare un array Java, cioè riservargli un posto in memoria, usando l' operatore new . Ecco come è fatto:
new typeOfArray[length];
dove typeOfArray è il tipo dell'array e length è la sua lunghezza (cioè il numero di celle) espressa come numero intero ( int
). Ma si noti che qui abbiamo allocato solo memoria per l'array: non abbiamo associato l'array dichiarato a nessuna variabile dichiarata in precedenza. Di solito, un array viene prima dichiarato e quindi istanziato, ad esempio:
int[] myArray; // Array declaration
myArray = new int[10]; // Create (allocate memory for) an array of 10 ints
Qui abbiamo creato un array di interi chiamato myArray , informando il compilatore che consiste di 10 celle (ognuna delle quali conterrà un numero intero). Tuttavia, è molto più comune utilizzare la seguente sintassi abbreviata per creare un array immediatamente quando viene dichiarato:
int[] myArray = new int [10]; // Declare the array and allocate memory "in one blow"
Notare che:Dopo aver creato un array utilizzando l' operatore new , le sue celle contengono valori predefiniti. Per i tipi numerici (come nel nostro esempio), il valore predefinito è 0, per il tipo booleano è false e per i tipi di riferimento è null . Pertanto, dopo aver eseguito questa istruzione
int[] myArray = new int[10];
otteniamo un array di dieci numeri interi e, fino a quando il programma non fa qualcosa per cambiare i valori, ogni cella contiene 0.
Puoi trovare maggiori informazioni sugli array nell'articolo " Qualcosa sugli array " |
Lunghezza dell'array in Java
Come abbiamo detto sopra, la lunghezza di un array è il numero di elementi che l'array è progettato per contenere. La lunghezza di un array non può essere modificata dopo che è stata creata. notare cheche gli elementi dell'array sono numerati a partire da zero in Java. Quindi, se abbiamo un array di 10 elementi, allora l'indice del primo elemento è 0 e l'indice dell'ultimo è 9.
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
Produzione:
10
Inizializzazione di un array e accesso ai suoi elementi
Ora sappiamo come creare un array in Java. Il processo non ci fornisce un array vuoto, ma un array pieno di valori predefiniti. Ad esempio, per un array int , questo è 0 e se abbiamo un array di qualsiasi tipo di riferimento, il valore predefinito in ogni cella è null . Accediamo a un elemento dell'array (ad esempio, per impostarne il valore, visualizzarlo sullo schermo o eseguire qualche operazione con esso) tramite il suo indice. L'inizializzazione dell'array è il processo di riempimento di un array con valori specifici (diversi da quelli predefiniti). Esempio: creiamo un array di stringhe per le 4 stagioni e riempiamolo con i nomi delle stagioni.
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
Ora i nomi delle stagioni sono scritti nelle quattro celle del nostro array. Potremmo inizializzare l'array in modo diverso, combinando la dichiarazione e l'inizializzazione:
String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Inoltre, l' operatore new può essere omesso:
String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};
Come si visualizza un array sullo schermo in Java?
Puoi visualizzare gli elementi dell'array sullo schermo (cioè sulla console) usando un ciclo for . Un altro modo più breve per visualizzare un array sarà discusso nel paragrafo intitolato " Metodi utili per lavorare con gli array ". Nel frattempo, dai un'occhiata a questo esempio in cui un array viene visualizzato utilizzando un ciclo:
String[] seasons = new String {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Il programma visualizzerà quanto segue:
Winter
Spring
Summer
Autumn
Array unidimensionali e multidimensionali in Java
Ma cosa succede se vogliamo creare non un array di numeri, stringhe o altri oggetti, ma piuttosto un array di array? Java ti consente di farlo. Il tipo di array con cui abbiamo già familiarità ( int[] myArray = new int[8] ) è noto come array unidimensionale. Ma un array di array è chiamato array bidimensionale. È come una tabella che ha un numero di riga e un numero di colonna. Oppure, se hai imparato le basi dell'algebra lineare, puoi immaginarla come una matrice.
Int[][] myTwoDimentionalArray = new int[8][8];
Questo array ha esattamente 64 elementi: myTwoDimentionalArray[0][0] , myTwoDimentionalArray[0][1] , myTwoDimentionalArray[1][0] , myTwoDimentionalArray[1][1] e così via fino a myTwoDimentionalArray[7][7] . Quindi, se lo usiamo per rappresentare una scacchiera, allora A1 corrisponde a myTwoDimentialArray[0][0] ed E2 corrisponde a myTwoDimentialArray[4][1] . Ma fino a che punto possiamo spingerci? In Java, puoi specificare un array di array... un array di array di array e così via. Naturalmente, gli array tridimensionali e di dimensioni superiori vengono utilizzati molto raramente. Detto questo, potresti usare un array tridimensionale per programmare un cubo di Rubik, per esempio.
Metodi utili per lavorare con gli array
Java ha la classe java.util.Arrays per lavorare con gli array. In generale, le operazioni più comuni eseguite sugli array sono l'inizializzazione (riempimento di elementi), il recupero di un elemento (per indice), l'ordinamento e la ricerca. La ricerca e l'ordinamento degli array sono argomenti per un altro giorno. Da un lato, è buona norma scrivere da soli diversi algoritmi di ricerca e ordinamento. D'altra parte, tutti i migliori algoritmi sono già stati implementati e inclusi nelle librerie Java standard e puoi utilizzarli legalmente. Ecco tre metodi utili in questa classe.Ordinamento di un array
Il metodo void sort(int[] myArray, int fromIndex, int toIndex) ordina un array di interi o un sottoarray in ordine crescente.Ricerca di un elemento in un array
int binarySearch(int[] myArray, int fromIndex, int toIndex, int key) . Questo metodo cerca l' elemento chiave in un array o sottoarray myArray ordinato , da fromIndex a toIndex . Se l'elemento viene trovato, restituisce il suo indice. In caso contrario, restituisce (-fromIndex)-1 .Conversione di un array in una stringa
Il metodo String toString(int[] myArray) converte un array in una stringa. In Java, gli array non sovrascrivono toString() . Ciò significa che se provi a visualizzare un intero array tutto in una volta (System.out.println(myArray)) anziché un elemento alla volta come nel paragrafo intitolato " Visualizza un array sullo schermo ", otterrai il nome della classe e l'hash esadecimale dell'array (definito da Object.toString() ). Se sei un principiante, potresti non comprendere la spiegazione del metodo toString . Inizialmente non è necessario, ma l'utilizzo di questo metodo semplifica la visualizzazione di un array. Java ti consente di visualizzare facilmente un array senza utilizzare un ciclo. L'esempio seguente lo dimostra.Un esempio che utilizza sort, binarySearch e toString
Creiamo un array di numeri interi, visualizziamolo usando toString , ordiniamolo usando il metodo sort e poi troviamo un numero in esso.
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
}
}
Produzione:
[I@1540e19d
[1, 5, 4, 3, 7]
[1, 3, 4, 5, 7]
3
-1
La prima stringa è un tentativo di visualizzare l'array senza utilizzare toString . Il secondo è l'array visualizzato utilizzando toString . Il terzo è l'array ordinato. Il quarto è l'indice del numero che abbiamo cercato (5) nell'array ordinato (ricorda che contiamo da zero, quindi l'indice del quarto elemento dell'array è 3). Nella quinta corda, vediamo -1. Questo è un indice di matrice non valido. Segnala che il numero che abbiamo cercato (in questo caso, 0) non è nell'array.
Ulteriori informazioni sui metodi nella classe Array Classe Arrays e suo utilizzo — Questo articolo descrive alcuni metodi della classe Array |
Array in poche parole
-
Caratteristiche essenziali di un array: il tipo di dati inseriti in esso, il suo nome e la sua lunghezza.
L'ultima proprietà viene determinata quando viene creato l'array (quando la memoria viene allocata per l'array). Le prime due proprietà vengono determinate quando viene dichiarato l'array. -
La dimensione dell'array (numero di celle) deve essere un int
-
È impossibile modificare la lunghezza di un array dopo che è stato creato.
-
È possibile accedere a un elemento dell'array tramite il suo indice.
-
Gli elementi negli array, come tutto il resto in Java, sono numerati a partire da zero.
-
Dopo che un array è stato creato, viene riempito con i valori predefiniti.
-
Gli array in Java non sono gli stessi degli array in C++. Sono quasi come puntatori a array dinamici.
GO TO FULL VERSION