CodeGym /Java Blog /Random-IT /Array in Java
John Squirrels
Livello 41
San Francisco

Array in Java

Pubblicato nel gruppo Random-IT
Immagina gli armadi in un ripostiglio. Ciascuno di essi ha il proprio numero e ciascuno di essi contiene un oggetto Bagaglio. Oppure una carta dei vini dove ogni tipologia di vino è numerata e si ordina dando il numero della propria bevanda. O un elenco di studenti in cui "Adams" è registrato in prima posizione e "Zimmer" è l'ultimo. Oppure un elenco di passeggeri di un aereo, a ciascuno dei quali è assegnato un posto numerato. In Java, gli array sono spesso usati per lavorare con tali strutture, cioè insiemi di dati omogenei.

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.Array in Java - 2

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;

int[] myArray;

Object[] 
arrayOfObjects;  
È consigliabile dichiarare un array in questo modo. Questo è in stile Java.
2.
dataType arrayName[];

int myArray[];

Object 
arrayOfObjects[];
Metodo di dichiarazione di array ereditato da C/C++, funziona in Java
In entrambi i casi, dataType è il tipo delle variabili nell'array. Negli esempi, abbiamo dichiarato due array. Uno memorizzerà int s e l'altro — Oggetti oggetto . Pertanto, una dichiarazione di array ha un nome e un tipo (il tipo degli elementi dell'array). ArrayName è il nome dell'array.

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. Array in Java - 3Puoi ottenere la lunghezza dell'array usando la variabile length . Per esempio:

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. Array in Java - 4Perché abbiamo bisogno di tali array? Bene, per programmare matrici e tabelle, così come altri oggetti che hanno una struttura simile. Ad esempio, una scacchiera può essere rappresentata da un array 8x8. Un array multidimensionale viene dichiarato e creato come segue:

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
La classe Arrays ha 18 metodi importanti per lavorare con gli 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.

Materiali utili sugli array

Vuoi saperne di più sugli array? Dai un'occhiata agli articoli qui sotto. Include molto materiale interessante e utile su questo argomento.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION