Longitud de matriz en Java

101

Declaro una matriz como se muestra a continuación:

int[] arr = new int[10];

Luego asigné los siguientes valores a la matriz:

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

Luego declaré e inicialicé una variable entera:

int arrayLength = arr.length;

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

Kiran Bhat
fuente

Respuestas:

86

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

Kai
fuente
3
Sí, las matrices son asignaciones de memoria estática.
Ramon Saraiva
3
¿Puedes mostrar el javadoc? No sé dónde está esta propiedad de "longitud".
Philip Rego
1
@PhilipRego Está en la especificación de idioma docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.3
Torben
71

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

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

Costi Ciudatu
fuente
No se puede invocar length () en el tipo de matriz long [] Java (67108980)
Alessandro Ornano
22

Para encontrar la longitud de una matriz A, debe usar la lengthpropiedad. Es como A.length, no use, se usa A.length()principalmente para el tamaño de objetos relacionados con cadenas.

ingrese la descripción de la imagen aquí

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

Si alguna vez tiene alguno de estos problemas, la forma más sencilla es ejecutarlo. ¡Feliz Programación!

Ravi Pandey
fuente
6

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

int[] intArray = new int[15];

La longitud será siempre 15, sin importar cuántos índices se llenen.

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

Ramón Saraiva
fuente
5

En Java, su tamaño "real" y "lógico" es el mismo. El tiempo de ejecución llena todas las ranuras de matriz con valores predeterminados al momento de la asignación. Entonces, tu acontiene 10.

Puñal
fuente
5

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

Cuando inicializa la matriz:

int[] arr = new int[10];

Java creará una matriz con 10 elementos y los inicializará a 0. Consulte la especificación del lenguaje Java para obtener detalles de los valores iniciales para este y otros tipos primitivos.

Tom Elliott
fuente
4
int[] arr = new int[10];

arres una intmatriz de tipos que tiene tamaño 10. Es una matriz de 10elementos. Si no inicializamos una matriz de forma predeterminada, los elementos de la matriz contienen un valor predeterminado. En el caso de la matriz int, el valor predeterminado es 0.

length es una propiedad que se aplica a una matriz.
aquí arr.lengthte daré 10.

Añil
fuente
3

'

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

así que aquí hemos creado una matriz con un espacio de memoria de 3 ... así es como se ve realmente

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

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

La salida de la segunda declaración será 3 ya que la longitud de la matriz es 3 ... No se confunda entre el valor del índice y la longitud de la matriz ...

¡salud!

Ayush Murty AH
fuente
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
alok
fuente
1

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

Turix
fuente
1

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

Nikhil Kumar
fuente
1

Si desea el tamaño lógico de la matriz, puede recorrer todos los valores de la matriz y compararlos con cero. Incrementa 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 echar un vistazo a las colecciones.

Struse
fuente
Este es solo un tamaño de "supongo que 0 no es un valor válido" y si eso es útil es algo dudoso.
Tom
Se me ocurrió 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
1

Debería ser:

int a = arr.length;

Deben evitarse los paréntesis.

Godlu
fuente
5
¡Bienvenido a stack overflow! Dado que esta es una pregunta que 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 al punto de la pregunta, simplemente corrige un error tipográfico que ya ha sido apuntado en una respuesta (que responde a la pregunta) y un comentario de pregunta.
John Dvorak
0

Las matrices de Java en realidad tienen un tamaño fijo, y las otras respuestas explican cómo .length no está realmente haciendo lo que esperarías. Solo me gustaría agregar que, dada su pregunta, lo que podría querer usar es una ArrayList, que es una matriz que puede crecer y reducirse:

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

Aquí, el método .size () le mostrará la cantidad de elementos en su lista, y puede aumentar esto a medida que agrega cosas.

draxil
fuente
0

si quiere decir "tamaño lógico", el índice de la matriz, entonces simplemente int arrayLength = arr.length-1; dado que el índice de la matriz comienza con "0", entonces el "índice de la matriz" lógico o siempre será menor que el tamaño real en "uno".

Salah
fuente
0

A las matrices se les asigna memoria en tiempo de compilación en Java, por lo que son estáticas, los elementos que no se establecen o modifican explícitamente se establecen con los valores predeterminados. Puede usar un código como este, aunque no se recomienda ya que no cuenta los valores predeterminados, incluso si los inicializa explícitamente de esa manera, también es probable que cause errores en el futuro. Como dijeron otros, al buscar el tamaño real, se debe usar ".length" en lugar de ".length ()".

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
Poobean
fuente