2012-01-06 8 views
40

I declaró una matriz como se muestra a continuación:longitud de la matriz en Java

int[] arr = new int[10]; 

Entonces asignado los siguientes valores de la matriz:

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

Entonces declaré y se inicializa una variable de número entero:

int arrayLength = arr.length; 

Esto será útil para encontrar el tamaño real, pero ¿hay algún método para encontrar el tamaño lógico de la matriz?

+68

¿Por qué no lo ejecutas y lo averiguas? – skaffman

+6

¿Por qué no intentas y ves? Las matrices no tienen el método 'length()', pero prueban 'System.out.println (arr.length);' –

Respuesta

46

Contiene el tamaño asignado, 10. Los índices sin asignar contendrán el valor predeterminado que es 0 para int.

+3

Sí, las matrices son asignaciones de memoria estática. –

+0

¿Puedes mostrar el javadoc? No sé dónde está esta propiedad de "longitud". –

3

En Java, su tamaño "real" y "lógico" es el mismo. El tiempo de ejecución llena todas las ranuras de la matriz con valores predeterminados en la asignación. Por lo tanto, su a contiene 10.

34

En primer lugar, length es una propiedad, por lo que sería arr.length en lugar de arr.length().

Y devolverá 10, el tamaño declarado. Los elementos que no se declara explícitamente se inicializan con 0.

4

matrices son la asignación de memoria estática, por lo que si inicializar una matriz de enteros:

int[] intArray = new int[15]; 

La longitud será siempre 15, no importa cuantos índices se llenan

Y otra cosa, cuando se inicializa una matriz de enteros, todos los índices se llenarán con "0".

4

En este caso, arr.length devolverá 10, el tamaño de la matriz que ha asignado. El tamaño lógico no se aplica aquí, ya que es una matriz de longitud fija.

Al inicializar la matriz:

int[] arr = new int[10]; 

Java creará una matriz con 10 elementos e inicializar todos ellos a 0. Vea la Java language spec para los detalles de los valores iniciales de este y otros tipos primitivos.

1

Contendrá el tamaño real de la matriz, ya que es lo que inicializó la matriz cuando se declaró. Java no tiene ningún concepto del tamaño "lógico" de una matriz, por lo que respecta al valor predeterminado de 0 es tan lógico como los valores que ha establecido manualmente.

1

Debe ser int a = arr.length; paréntesis deben ser evitados.

+3

¡Bienvenido al desbordamiento de pila! Como esta es una pregunta que ya tiene más de un año, y ya tiene otras seis respuestas, esperaría una respuesta más larga que esta. Además, no está respondiendo el punto de la pregunta, simplemente arreglando un error tipográfico que ya ha sido apuntado en una respuesta (que responde a la pregunta) _y_ un comentario de pregunta. –

1

Contiene el tamaño asignado, 10. Los índices restantes contienen el valor por defecto que es 0.

1

Si desea que el tamaño lógico de la matriz, se puede recorrer todos los valores de la matriz y se les contra cero Incremente el valor si no es cero y ese sería el tamaño lógico. Debido a que el tamaño de la matriz es fijo, no tiene ningún método incorporado, tal vez debería echarle un vistazo a las colecciones.

+0

Esto es solo un tamaño de "Supongo que 0 no es un valor válido" y si es útil es un poco dudoso. – Tom

+0

Me acabo de ocurrir una idea para obtener la longitud de la matriz (los 0 no son válidos). Como dije, puede usar colecciones para una manipulación de datos más precisa. – Struse

3

`

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

por lo que aquí han creado una matriz con un espacio de memoria de 3 ... esto es cómo se ve realmente

0th 1º 2º ...........> Índice 2 4 5 ...........> Número

Así que, como puede ver, el tamaño de esta matriz es 3, pero el índice de la matriz es solo 2, ya que cualquier matriz comienza con el 0 ° índice.

segunda declaración de salida' será del 3 ya que la longitud de la matriz es de 3 ... Por favor, no se confunda entre el valor del índice y la longitud de la matriz ....

saludos!

10

Para encontrar la longitud de una matriz 'A', debe usar la propiedad de longitud. Es como 'A.length', no use A.length(). Se usa principalmente para el tamaño de objetos relacionados con cuerdas. enter image description here

La propiedad de longitud siempre mostrará el espacio total asignado a la matriz durante la inicialización.

Si alguna vez tiene alguno de estos tipos de problemas, la forma más simple es ejecutarlo. Programación feliz

+2

(y) para captura de pantalla! –

Cuestiones relacionadas