JavaRush /Java Blog /Random-IT /Array in Java

Array in Java

Pubblicato nel gruppo Random-IT
Immagina le celle in un ripostiglio. Ognuno ha il proprio numero e ognuno contiene una sorta di oggetto "Bagaglio". Oppure una carta dei vini, in cui tutte le tipologie di vino sono numerate e quando si effettua un ordine basta indicare il numero della bevanda. Oppure un elenco di studenti in un gruppo, in cui lo studente "Andreev" sarà scritto nella prima cella e "Yakovlev" nell'ultima cella. Oppure un elenco di passeggeri dell'aereo, a ciascuno dei quali viene assegnato un posto con un numero specifico. In Java, per lavorare con strutture simili, cioè molti dati omogenei, vengono spesso utilizzati gli array in Java.

Cos'è un array?

Un array è una struttura dati che memorizza elementi dello stesso tipo. Può essere pensato come un insieme di celle numerate, ciascuna delle quali può contenere alcuni dati (un elemento dati per cella). L'accesso a una cella specifica viene effettuato tramite il suo numero. Il numero di un elemento in un array è anche chiamato indice . Nel caso di Java, l'array è omogeneo, cioè tutte le sue celle memorizzeranno elementi dello stesso tipo. Quindi, un array di numeri interi contiene solo numeri interi (ad esempio, di tipo int ), un array di stringhe contiene solo stringhe, un array di elementi della classe Dog che abbiamo creato conterrà solo oggetti Dog . Cioè, in Java non possiamo mettere un intero nella prima cella di un array, una String nella seconda e un “cane” nella terza. Array in Java

Dichiarazione di matrice

Come dichiarare un array?

Come ogni variabile, un array in Java deve essere dichiarato. Puoi farlo in due modi. Sono equivalenti, ma il primo è più coerente con lo stile Java. Il secondo è l'eredità del linguaggio C (molti programmatori C sono passati a Java e per loro comodità è stato lasciato un metodo alternativo). La tabella mostra entrambi i modi per dichiarare un array in Java:
NO. Dichiarazione di array, sintassi Java Esempi Un commento
1.
dataType[] arrayName;
int[] myArray;

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

Object
arrayOfObjects[];
Un modo ereditato di dichiarare gli array da C/C++ che funziona anche in Java
In entrambi i casi, dataType è il tipo delle variabili nell'array. Negli esempi abbiamo dichiarato due array. Uno memorizzerà numeri interi di tipo int , l'altro memorizzerà oggetti di tipo Object . Pertanto, quando viene dichiarato un array, ha un nome e un tipo (il tipo delle variabili dell'array). arrayName è il nome dell'array.

Creazione di una matrice

Come creare un array?

Come qualsiasi altro oggetto, è possibile creare un array Java, ovvero riservargli spazio di memoria, utilizzando l' operatore new . Questo è fatto in questo modo:
new typeOfArray [length];
Dove typeOfArray è il tipo dell'array e length è la sua lunghezza (ovvero il numero di celle), espressa in numeri interi ( int ). Tuttavia, qui abbiamo solo allocato memoria per l'array, ma non abbiamo associato l'array creato ad alcuna variabile precedentemente dichiarata. Di solito un array viene prima dichiarato e poi creato, ad esempio:
int[] myArray; // array declaration
myArray = new int[10]; // creation, that is, allocation of memory for an array of 10 elements of type int
Qui abbiamo dichiarato un array di numeri interi chiamato myArray e poi abbiamo dichiarato che è composto da 10 celle (ognuna delle quali memorizzerà un numero intero). Tuttavia, è molto più comune creare un array immediatamente dopo la dichiarazione utilizzando questa sintassi abbreviata:
int[] myArray = new int[10]; // declaration and allocation of memory "in one bottle"
Nota:Dopo aver creato un array utilizzando new , le sue celle vengono riempite con valori predefiniti. Per i tipi numerici (come nel nostro esempio) questo sarà 0, per boolean - false , per i tipi riferimento - null . Quindi, dopo l'operazione
int[] myArray = new int[10];
otteniamo un array di dieci numeri interi e finché questo non cambia durante il programma, ogni cella contiene uno 0.

Maggiori informazioni sugli array possono essere trovate nell'articolo “ Qualcosa sugli array

Lunghezza dell'array in Java

Come abbiamo detto sopra, la lunghezza di un array è il numero di elementi per i quali è progettato l'array. La lunghezza di un array non può essere modificata una volta creata. Nota:In Java gli elementi dell'array vengono numerati a partire da zero. Cioè, se abbiamo un array di 10 elementi, il primo elemento dell'array avrà indice 0 e l'ultimo avrà indice 9. Array in Java - 3Puoi accedere alla lunghezza dell'array utilizzando la variabile length . Esempio:
int[] myArray = new int[10]; // created an array of integers with 10 elements and named it myArray
System.out.println(myArray.length); // printed to the console the length of the array, that is, the number of elements that we can put in the array
Uscita del programma:
10

Inizializzazione di un array e accesso ai suoi elementi

Come creare un array in Java è già chiaro. Dopo questa procedura, non otteniamo un array vuoto, ma un array pieno di valori predefiniti. Ad esempio, nel caso di int , questi saranno 0 e se abbiamo un array con dati di tipo riferimento, per impostazione predefinita viene scritto null in ogni cella . Accediamo a un elemento dell'array (ovvero, scriviamo un valore in esso o lo visualizziamo sullo schermo o eseguiamo qualche operazione con esso) tramite il suo indice. L'inizializzazione di un array lo riempie con dati specifici (non per impostazione predefinita). Esempio: creiamo un array di 4 stagioni e riempiamolo con valori stringa: i nomi di queste stagioni.
String[] seasons  = new String[4]; /* declared and created an array. Java allocated memory for an array of 4 strings, and now each cell is null (because the string is a reference type)*/

seasons[0] = "Winter"; /* in the first cell, that is, in the cell with a zero number, we wrote the string Winter. Here we get access to the zero element of the array and write a specific value there */
seasons[1] = "Spring"; // do the same procedure with cell number 1 (second)
seasons[2] = "Summer"; // ...number 2
seasons[3] = "Autumn"; // and with the last one, number 3
Ora tutte e quattro le celle del nostro array contengono i nomi delle stagioni. L'inizializzazione può essere eseguita anche in modo diverso, combinando inizializzazione e dichiarazione:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Inoltre, il nuovo operatore può essere omesso:
String[] seasons  = {"Winter", "Spring", "Summer", "Autumn"};

Come visualizzare un array in Java sullo schermo?

È possibile visualizzare gli elementi dell'array sullo schermo (ovvero sulla console), ad esempio, utilizzando un ciclo for . Un altro modo più breve per visualizzare un array sullo schermo sarà discusso nel paragrafo "Metodi utili per lavorare con gli array" di seguito. Per ora, guardiamo un esempio con l'output ciclico di un array:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Di conseguenza, il programma restituirà il seguente risultato:
Inverno Primavera estate Autunno

Array Java unidimensionali e multidimensionali

E se volessimo creare non un array di numeri, un array di stringhe o un array di alcuni oggetti, ma un array di array? Java ti consente di farlo. Il già noto array int[] myArray = new int[8] è un cosiddetto array unidimensionale. E un array di array è chiamato bidimensionale. È come una tabella che ha un numero di riga e un numero di colonna. Oppure, se hai imparato i fondamenti dell'algebra lineare, su una matrice. Array in Java - 4Perché sono necessari tali array? In particolare, per programmare le stesse matrici e tabelle, nonché oggetti che assomigliano a loro nella struttura. Ad esempio, il campo di gioco degli scacchi può essere specificato come un array 8x8. Un array multidimensionale viene dichiarato e creato come segue:
int[][] myTwoDimentionalArray = new int [8][8];
Ci sono esattamente 64 elementi in questo array: 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, la cella A1 rappresenterà myTwoDimentionalArray[0][0]e E2 rappresenterà myTwoDimentionalArray[4][1]. Dove ce ne sono due, ce ne sono tre. In Java è possibile specificare un array di array... un array di array di array e così via. È vero, gli array tridimensionali e più vengono utilizzati molto raramente. Tuttavia, utilizzando un array tridimensionale, puoi programmare, ad esempio, un cubo di Rubik.

Cos'altro leggere

Array multidimensionali

Metodi utili per lavorare con gli array

Per lavorare con gli array in Java esiste la classe java.util.Arrays (array in inglese significa “array”). In generale, con gli array vengono spesso eseguite le seguenti operazioni: riempimento di elementi (inizializzazione), recupero di un elemento (per numero), ordinamento e ricerca. La ricerca e l'ordinamento degli array è un argomento separato. Da un lato, è molto utile esercitarsi e scrivere da soli diversi algoritmi di ricerca e ordinamento. D'altronde tutte le best practices sono già state scritte e inserite nelle librerie Java, e possono essere utilizzate legalmente. Ecco tre metodi utili di questa classe

Ordina una matrice

Il metodo void sort(int[] myArray, int fromIndex, int toIndex)ordina un array di numeri interi o il relativo sottoarray in ordine crescente.

Ricerca in un array per l'elemento desiderato

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key). Questo metodo cerca l' elemento chiave in un myArray o sottoarray già ordinato , iniziando da fromIndex e terminando con toIndex . Se l'elemento viene trovato, il metodo restituisce il suo indice, altrimenti - . (-fromIndex)-1

Conversione di un array in una stringa

Il metodo String toString(int[] myArray)converte l'array in una stringa. Il fatto è che in Java gli array non sovrascrivono toString() . Ciò significa che se provi a visualizzare l'intero array (anziché elemento per elemento, come in " Stampa di un array sullo schermo ") direttamente sullo schermo ( System.out.println(myArray)), otterrai il nome della classe e il codice hash esadecimale dell'array (questo è definito da Object.toString() ). Se sei un principiante, potresti non comprendere la spiegazione del metodo toString. Nella prima fase ciò non è necessario, ma utilizzando questo metodo l'output dell'array risulta semplificato. Java semplifica la visualizzazione di un array senza utilizzare un ciclo. Maggiori informazioni su questo nell'esempio seguente.

Esempio su sort, BinarySearch e toString

Creiamo un array di numeri interi, visualizziamolo sullo schermo utilizzando toString , ordiniamolo utilizzando il metodo sort e troviamo al suo interno un numero.
class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; //declaring and initializing the array
        System.out.println(array);//trying to display our array on the screen without the toString method - we get a hexadecimal number
        System.out.println(Arrays.toString(array));//печатаем массив "правильно"
        Arrays.sort(array, 0, 4); // sort the entire array from zero to the fourth member
        System.out.println(Arrays.toString(array));//print the sorted array to the screen
        int key = Arrays.binarySearch(array, 5); // ищем key - число 5 в отсортированном массиве.
        //binarySearch method will return the index of the sorted array element, in which the required number is "hidden"
        System.out.println(key);//распечатываем индекс искомого числа
System.out.println(Arrays.binarySearch(array, 0));//а теперь попробуем найти число, которого в массиве нет,
        // and immediately display the result on the screen

    }
}
Uscita del programma:
[I@1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
La prima riga è un tentativo di visualizzare un array senza toString , la seconda sta visualizzando un array utilizzando toString , la terza è un array ordinato, la quarta è l'indice del numero desiderato 5 in un array ordinato (ricorda che stiamo contando da zero, quindi il quarto elemento dell'array ha un indice 3). Nella quinta riga vediamo il valore -1 . Un array non dispone di tale indice. L'uscita segnala che l'elemento desiderato (in questo caso, 0) non è nell'array.

Maggiori informazioni sui metodi della classe Array

La classe Arrays e il suo utilizzo - l'articolo descrive alcuni metodi della classe Array

La cosa principale sugli array

  • Le caratteristiche principali di un array: il tipo di dati in esso contenuti, nome e lunghezza.
    Quest'ultimo viene deciso durante l'inizializzazione (allocazione della memoria per l'array), i primi due parametri vengono determinati durante la dichiarazione dell'array.

  • La dimensione dell'array (numero di celle) deve essere definita in int

  • Non è possibile modificare la lunghezza di un array dopo che è stato creato.

  • È possibile accedere a un elemento dell'array tramite il suo indice.

  • Negli array, come altrove in Java, gli elementi sono numerati a partire da zero.

  • Dopo la procedura di creazione dell'array, viene riempito con i valori predefiniti.

  • Gli array in Java sono strutturati in modo diverso rispetto a C++. Sono quasi uguali ai puntatori agli array dinamici.

Materiali utili sugli array

Vuoi saperne di più sugli array? Si prega di dare un'occhiata agli articoli seguenti. Ci sono molte informazioni interessanti e utili su questo argomento.
  1. Qualcosa sugli array - Buon articolo dettagliato sugli array

  2. La classe Arrays e il suo utilizzo - l'articolo descrive alcuni metodi della classe Array

  3. Array multidimensionali : un articolo dettagliato sugli array multidimensionali con esempi.

  4. Restituisci un array di lunghezza zero, non nullo - L'autore di Effective Programming Joshua Bloch parla di come restituire meglio array vuoti

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION