Lunghezza array in Java


101

Ho dichiarato un array come mostrato di seguito:

int[] arr = new int[10];

Quindi ho assegnato i seguenti valori all'array:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

Quindi ho dichiarato e inizializzato una variabile intera:

int arrayLength = arr.length;

Questo sarà utile per trovare la dimensione effettiva, ma esiste un metodo per trovare la dimensione logica dell'array?

Risposte:



71

Prima di tutto, lengthè una proprietà, quindi sarebbe arr.lengthinvece di arr.length().

E restituirà 10, la dimensione dichiarata. Gli elementi che non dichiari esplicitamente vengono inizializzati con 0.


Impossibile richiamare length () sul tipo di array long [] Java (67108980)
Alessandro Ornano

22

Per trovare la lunghezza di un array Adovresti usare la lengthproprietà. È come A.length, non usarlo A.length()principalmente per la dimensione degli oggetti correlati alla stringa.

inserisci qui la descrizione dell'immagine

La proprietà length mostrerà sempre lo spazio totale allocato all'array durante l'inizializzazione.

In caso di problemi di questo tipo, il modo più semplice è eseguirlo. Buona programmazione!


6

Gli array sono allocazione di memoria statica, quindi se inizializzi un array di numeri interi:

int[] intArray = new int[15];

La lunghezza sarà sempre 15, indipendentemente dal numero di indici riempiti.

E un'altra cosa, quando si inizializza un array di numeri interi, tutti gli indici verranno riempiti con "0".


5

In Java, le dimensioni "effettive" e "logiche" sono le stesse. Il runtime riempie tutti gli slot dell'array con valori predefiniti al momento dell'allocazione. Quindi, il tuo acontiene 10.


5

In questo caso, arr.length restituirà 10, la dimensione dell'array che hai allocato. La dimensione logica non si applica qui, poiché si tratta di un array di lunghezza fissa.

Quando si inizializza l'array:

int[] arr = new int[10];

Java creerà un array con 10 elementi e li inizializzerà tutti a 0. Vedere le specifiche del linguaggio Java per i dettagli dei valori iniziali per questo e altri tipi primitivi.


4
int[] arr = new int[10];

arrè un intarray di tipi che ha dimensione 10. È una serie di 10elementi. Se non inizializziamo un array per impostazione predefinita, gli elementi dell'array contengono il valore predefinito. In caso di int array il valore predefinito è 0.

length è una proprietà applicabile a un array.
qui arr.lengthdarà 10.


3

`

int array [] = nuovo int [3]; Array.length;

quindi qui abbiamo creato un array con uno spazio di memoria di 3 ... questo è come appare effettivamente

0 ° 1 ° 2 ° ...........> Indice 2 4 5 ...........> Numero

Quindi, come vedi, la dimensione di questo array è 3 ma l'indice dell'array è solo fino a 2 poiché ogni array inizia con 0 ° indice.

la seconda istruzione 'l'output deve essere 3 poiché la lunghezza dell'array è 3 ... Per favore non confondere il valore dell'indice e la lunghezza dell'array ....

Saluti!


2
  int arr[]={4,7,2,21321,657,12321};
  int length =arr.length;
  System.out.println(length); // will return 6

  int arr2[] = new int[10];
   arr2[3] = 4;
  int length2 =arr2.length;
  System.out.println(length2); // // will return 10. all other digits will be 0 initialize because staic memory initialization

1

Conterrà la dimensione effettiva dell'array poiché è ciò che hai inizializzato come array quando lo hai dichiarato. Java non ha il concetto della dimensione "logica" di un array, per quanto riguarda il valore predefinito di 0 è altrettanto logico dei valori impostati manualmente.


1

Contiene la dimensione allocata, 10. Gli indici rimanenti conterranno il valore predefinito che è 0.


1

Se si desidera la dimensione logica dell'array, è possibile attraversare tutti i valori nell'array e confrontarli con zero. Incrementa il valore se non è zero e quella sarebbe la dimensione logica. Poiché la dimensione dell'array è fissa, non hai alcun metodo integrato, potresti dare un'occhiata alle raccolte.


Questa è solo una dimensione "Presumo che 0 non sia un valore valido" e se questo è utile è un po 'dubbio.
Tom

Mi è appena venuta l'idea di ottenere la lunghezza dell'array (gli 0 non sono validi). Come ho detto, puoi utilizzare le raccolte per una manipolazione dei dati più precisa.
Struse

1

Dovrebbe essere:

int a = arr.length;

La parentesi dovrebbe essere evitata.


5
Benvenuto in Stack Overflow! Poiché questa è una domanda che ha più di un anno e ha già altre sei risposte, mi aspetterei una risposta più lunga di questa. Inoltre, non stai rispondendo al punto della domanda, ma semplicemente correggendo un errore di battitura che è già stato preso di mira in una risposta (che risponde alla domanda) e un commento alla domanda.
John Dvorak

0

Gli array Java sono effettivamente di dimensioni fisse e le altre risposte spiegano come .length non stia davvero facendo quello che ti aspetteresti. Vorrei solo aggiungere che, data la tua domanda, ciò che potresti voler utilizzare è un ArrayList, ovvero un array che può crescere e ridursi:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

Qui il metodo .size () ti mostrerà il numero di elementi nella tua lista e puoi aumentarlo man mano che aggiungi cose.


0

se intendi per "dimensione logica", l'indice di array, allora semplicemente int arrayLength = arr.length-1; poiché l'indice dell'array inizia con "0", quindi l '"indice dell'array" logico sarà sempre inferiore alla dimensione effettiva di "uno".


0

Gli array vengono allocati in memoria in fase di compilazione in java, quindi sono statici, gli elementi non impostati o modificati esplicitamente vengono impostati con i valori predefiniti. Potresti usare un codice come questo, anche se non è raccomandato in quanto non conta i valori predefiniti, anche se li inizializzi esplicitamente in questo modo, è anche probabile che causi bug su tutta la linea. Come altri hanno detto, quando si cerca la dimensione effettiva, è necessario utilizzare ".length" invece di ".length ()".

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.