En Java, los arrays no anulan toString()
, por lo que si se intenta imprimir uno directamente, se obtiene el className
+ '@' + el hexágono del hashCode
del array, tal y como lo define Object.toString()
:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // prints something like '[I@3343c8b3'
Pero normalmente, querríamos algo más como [1, 2, 3, 4, 5]
. ¿Cuál es la forma más sencilla de hacerlo? Aquí hay algunos ejemplos de entradas y salidas:
// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]
// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
Desde Java 5 se puede utilizar Arrays.toString(arr)
o Arrays.deepToString(arr)
para arrays dentro de arrays. Tenga en cuenta que la versión Object[]
llama a .toString()
en cada objeto del array. La salida está incluso decorada de la forma exacta que usted pide.
Ejemplos:
String[] array = new String[] {"John", "Mary", "Bob"};
System.out.println(Arrays.toString(array));
Salida:
[Juan, María, Bob]
String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
System.out.println(Arrays.toString(deepArray));
//salida: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
System.out.println(Arrays.deepToString(deepArray));
Salida:
[[Juan, María], [Alicia, Bob]]
double
Array: double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
System.out.println(Arrays.toString(doubleArray));
Salida:
[7.0, 9.0, 5.0, 1.0, 3.0 ]
int
Array: int[] intArray = { 7, 9, 5, 1, 3 };
System.out.println(Arrays.toString(intArray));
Salida:
[7, 9, 5, 1, 3 ]
Comprueba siempre primero las bibliotecas estándar. Inténtalo:
System.out.println(Arrays.toString(array));
o si tu array contiene otros arrays como elementos:
System.out.println(Arrays.deepToString(array));