La diferencia entre tamaño y longitud en Java

Mohammad Irfan 12 octubre 2023
  1. La propiedad length de los arrays en Java
  2. Ejemplo de .length en un array en Java
  3. Ejemplo del método size() en un array en Java
  4. Encuentre la longitud usando el método length() en Java
  5. Método size() de las colecciones de Java
  6. La diferencia entre tamaño y longitud en Java
La diferencia entre tamaño y longitud en Java

Este tutorial presenta la diferencia entre tamaño y longitud en Java. También enumeramos algunos códigos de ejemplo para ayudarlo a comprender el tema.

Java tiene un método size() y una propiedad length. Un principiante puede pensar que estos son intercambiables y realizan la misma tarea porque suenan algo igual. En Java, el tamaño y la longitud son dos cosas diferentes. Aquí aprenderemos las diferencias entre los dos.

La propiedad length de los arrays en Java

Los arrays almacenan un número fijo de datos del mismo tipo de forma ordenada. Todas los arrays en Java tienen un campo de longitud que almacena el espacio asignado para los elementos de esa matriz. Es un valor constante que se usa para averiguar la capacidad máxima del array.

  • Recuerde que este campo no nos dará el número de elementos presentes en el array sino el número máximo de elementos que se pueden almacenar (independientemente de si los elementos están presentes o no).

Ejemplo de .length en un array en Java

En el siguiente código, primero inicializamos un array de longitud 7. El campo de longitud de esta matriz muestra 7 aunque no agregamos ningún elemento. Este 7 solo indica la capacidad máxima.

public class Main {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    System.out.print("Length of the Array is: " + intArr.length);
  }
}

Producción :

Length of the Array is: 7

Ahora, agreguemos 3 elementos a el array usando su índice y luego imprimamos el campo de longitud. Todavía muestra 7.

public class Main {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    intArr[0] = 20;
    intArr[1] = 25;
    intArr[2] = 30;
    System.out.print("Length of the Array is: " + intArr.length);
  }
}

Producción :

Length of the Array is: 7

El campo de longitud es constante porque los arrays tienen un tamaño fijo. Debemos definir el número máximo de elementos que almacenaremos en el array (la capacidad del array) durante la inicialización, y no podemos exceder este límite.

Ejemplo del método size() en un array en Java

No hay un método size() para matrices; devolverá un error de compilación. Vea el ejemplo a continuación.

public class SimpleTesting {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    System.out.print("Length of the Array is: " + intArr.size());
  }
}

Producción :

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot invoke size() on the array type int[]

	at SimpleTesting.main(SimpleTesting.java:7)

Encuentre la longitud usando el método length() en Java

Las cadenas de Java son simplemente una colección ordenada de caracteres y, a diferencia de los arrays, tienen un método length() y no un campo length. Este método devuelve el número de caracteres presentes en la cadena.

Vea el ejemplo a continuación.

public class Main {
  public static void main(String[] args) {
    String str1 = "This is a string";
    String str2 = "Another String";
    System.out.println("The String is: " + str1);
    System.out.println("The length of the string is: " + str1.length());
    System.out.println("\nThe String is: " + str2);
    System.out.println("The length of the string is: " + str2.length());
  }
}

Producción :

The String is: This is a string
The length of the string is: 16

The String is: Another String
The length of the string is: 14

Tenga en cuenta que no podemos usar la propiedad length en cadenas y que el método length no es aplicable en matrices. El siguiente código muestra los errores si los usamos incorrectamente.

public class SimpleTesting {
  public static void main(String[] args) {
    String str1 = "This is a string";
    System.out.println("The length of the string is: " + str1.length);
  }
}

Producción :

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	length cannot be resolved or is not a field

	at SimpleTesting.main(SimpleTesting.java:7)

De manera similar, no podemos usar el método string length() en matrices.

public class SimpleTesting {
  public static void main(String[] args) {
    int[] intArray = {1, 2, 3};
    System.out.println("The length of the string is: " + intArray.length());
  }
}

Producción :

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot invoke length() on the array type int[]

	at SimpleTesting.main(SimpleTesting.java:7)

Método size() de las colecciones de Java

size() es un método de la clase java.util.Collections. La clase Collections es utilizada por muchas colecciones (o estructuras de datos) diferentes como ArrayList, LinkedList,HashSet y HashMap.

El método size() devuelve el número de elementos actualmente presentes en la colección. A diferencia de la propiedad length de los arrays, el valor devuelto por el método size() no es constante y cambia según el número de elementos.

Todas las colecciones del Collection Framework en Java se asignan dinámicamente, por lo que el número de elementos puede variar. El método size() se utiliza para realizar un seguimiento del número de elementos.

En el código siguiente, está claro que cuando creamos una nueva ArrayList sin ningún elemento en ella, el método size() devuelve 0.

import java.util.ArrayList;
import java.util.List;
public class Main {
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
  }
}

Producción :

The ArrayList is: []
The size of the ArrayList is: 0

Pero este valor cambia a medida que agregamos o eliminamos elementos. Después de agregar tres elementos, el tamaño aumenta a 3. Luego, eliminamos dos elementos y el tamaño de la lista se convierte en 1.

import java.util.ArrayList;
import java.util.List;
public class Main {
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
    list.add(20);
    list.add(40);
    list.add(60);
    System.out.println("\nAfter adding three new elements:");
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
    list.remove(0);
    list.remove(1);
    System.out.println("\nAfter removing two elements:");
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
  }
}

Producción :

The ArrayList is: []
The size of the ArrayList is: 0

After adding three new elements:
The ArrayList is: [20, 40, 60]
The size of the ArrayList is: 3

After removing two elements:
The ArrayList is: [40]
The size of the ArrayList is: 1

La diferencia entre tamaño y longitud en Java

Aunque el tamaño y la longitud a veces se pueden usar en el mismo contexto, tienen significados completamente diferentes en Java.

El campo length de los arrays se utiliza para denotar la capacidad máxima del array. Por capacidad máxima, nos referimos al número máximo de elementos que se pueden almacenar en ella. Este campo no considera el número de elementos presentes en el array y permanece constante.

El método de cadenas length() se utiliza para denotar el número de caracteres presentes en las cadenas. El método size() del Collections framework se utiliza para ver el número de elementos presentes actualmente en esa colección. Las Collections tienen un tamaño dinámico, por lo que el valor de retorno de size() puede variar.