2012-01-06 22 views
40

I dichiarò una matrice come mostrato di seguito:Array Lunghezza in Java

int[] arr = new int[10]; 

Poi assegnati i seguenti valori all'array:

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

Poi dichiarata e inizializzata una variabile intera:

int arrayLength = arr.length; 

Questo sarà utile per trovare la dimensione effettiva ma esiste un metodo per trovare la dimensione logica della matrice?

+68

Perché non lo esegui e lo scopri? – skaffman

+6

Perché non provare e vedere? Gli array non hanno un metodo 'length()', ma provano 'System.out.println (arr.length);' –

risposta

46

Contiene la dimensione allocata, 10. Gli indici non assegnati conterranno il valore predefinito che è 0 per int.

+3

Sì, gli array sono allocazioni di memoria statica. –

+0

Puoi mostrare il javadoc? Non so dove sia questa proprietà di "lunghezza". –

3

In Java, le dimensioni "effettive" e "logiche" sono le stesse. Il tempo di esecuzione riempie tutti gli slot di array con i valori predefiniti al momento dell'allocazione. Così, il vostro a contiene 10.

34

Prima di tutto, length è una struttura, quindi sarebbe arr.length invece di arr.length().

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

4

Array sono allocazione di memoria statica, quindi se si inizializza un array di interi:

int[] intArray = new int[15]; 

La lunghezza sarà sempre 15, non importa quanti indici sono riempiti.

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

4

In questo caso, arr.length restituirà 10, la dimensione della matrice assegnata. Le dimensioni logiche in realtà non si applicano qui, poiché questa è una matrice di lunghezza fissa.

Quando si inizializza la matrice:

int[] arr = new int[10]; 

Java creerà un array con 10 elementi e inizializzare tutte queste a 0. Vedere la Java language spec per i dettagli dei valori iniziali per questo e altri tipi primitivi.

1

Conterrà le dimensioni effettive dell'array in quanto è stato inizializzato l'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

Dovrebbe essere int a = arr.length; La parentesi deve essere evitata.

+3

Benvenuti nello stack overflow! Dal momento che questa domanda ha più di un anno e ha già altre sei risposte, mi aspetterei una risposta breve. Inoltre, non stai rispondendo al punto della domanda - semplicemente correggendo un refuso che è già stato preso di mira in una risposta (che risponde alla domanda) _e_ un commento di domanda. –

1

Esso contiene la dimensione allocata, 10. Gli indici rimanenti conterrà il valore di default, che è 0.

1

Se si desidera che la dimensione logica della matrice, si può attraversare tutti i valori nella matrice e check them contro 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 dover dare un'occhiata alle collezioni.

+0

Questa è solo una dimensione "presumo 0 non è un valore valido" e se ciò è utile è abbastanza dubbio. – Tom

+0

Mi è venuta un'idea per 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

3

`

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

ecco abbiamo creato un array con uno spazio di memoria di 3 ... questo è come appare in realtà

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

Così come si vede la dimensione di questo array è 3 ma l'indice dell'array è solo fino a 2 poiché qualsiasi array inizia con 0th index.

seconda dichiarazione di uscita' è pari al 3 dal momento che la lunghezza della matrice è 3 ... Si prega di non confondersi tra il valore dell'indice e la lunghezza della matrice ....

applausi!

10

Per trovare la lunghezza di un array 'A' è necessario utilizzare la proprietà length. È come "Lunghezza massima", non utilizzare A.length() principalmente utilizzato per la dimensione degli oggetti correlati alla stringa. enter image description here

La proprietà lunghezza mostra sempre lo spazio allocato totale alla matrice durante l'inizializzazione.

Se si verifica uno di questi tipi di problemi, il modo più semplice è eseguirlo. Happy Programming

+2

(y) per lo screenshot! –

Problemi correlati