W Javie, tablice nie nadpisują toString()
, więc jeśli spróbujesz wydrukować jedną bezpośrednio, otrzymasz className
+ '@' + hex z hashCode
tablicy, jak zdefiniowano przez Object.toString()
:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // prints something like '[[email protected]'
Ale zazwyczaj, my'chcemy czegoś więcej jak [1, 2, 3, 4, 5]
. Jaki jest najprostszy sposób, aby to zrobić? Oto kilka przykładowych danych wejściowych i wyjściowych:
// 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]
Od Javy 5 możesz użyć Arrays.toString(arr)
lub Arrays.deepToString(arr)
dla tablic wewnątrz tablic. Zauważ, że wersja Object[]
wywołuje .toString()
na każdym obiekcie w tablicy. Wyjście jest nawet udekorowane dokładnie w sposób, o który pytasz.
Przykłady:
String[] array = new String[] {"John", "Mary", "Bob"};
System.out.println(Arrays.toString(array));
Wyjście:
[John, Mary, Bob]
String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
System.out.println(Arrays.toString(deepArray))
//output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922].
System.out.println(Arrays.deepToString(deepArray));
Dane wyjściowe:
[[John, Mary], [Alice, Bob]]
double
Array: double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
System.out.println(Arrays.toString(doubleArray));
Wyjście:
[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));
Wyjście:
[7, 9, 5, 1, 3 ]
Zawsze najpierw sprawdź biblioteki standardowe. Spróbuj:
System.out.println(Arrays.toString(array));
lub jeśli twoja tablica zawiera inne tablice jako elementy:
System.out.println(Arrays.deepToString(array));