在 Java 開發中,將陣列內容輸出到控制台是極為常見的需求。最直觀的方式是使用 for 迴圈逐一列印元素,但這樣寫不僅繁瑣,還容易出現格式錯誤(如尾端多出逗號)。本文將帶您從手動迴圈進階到標準庫工具,並解決多維陣列與異構陣列的輸出難題。
早期開發者常這樣寫:手動印出左中括號、迴圈處理前 n-1 個元素加逗號、最後單獨處理最後一個元素並補上右中括號。
int arr[] = {1, 2, 3};
System.out.print("[");
for (int i = 0; i < arr.length - 1; i++) {
System.out.print(arr[i] + ", ");
}
System.out.println(arr[arr.length - 1] + "]");
輸出:[1, 2, 3]。雖然可行,但程式碼冗長且不易維護。
Java 標準庫 java.util.Arrays 提供了靜態方法 toString(),專門用於將一維陣列轉為可讀字串,自動處理格式與邊界。
import java.util.Arrays;
int arr[] = {1, 2, 3};
System.out.println(Arrays.toString(arr)); // 輸出:[1, 2, 3]
這行程式碼取代了整個 for 迴圈,語意清晰、效能優異,是日常開發的首選。
當陣列元素本身是陣列(如 Object[] 裝著 int[] 與 String[]),或是多維陣列時,Arrays.toString() 會呼叫元素的預設 toString(),輸出類似 [[I@158f9d3, [Ljava.lang.String;@79a2e7 的雜湊碼,而非實際內容。
int[] arr = {1, 2, 3};
String[] str = {"aaa", "bbb"};
Object[] array = {arr, str};
System.out.println(Arrays.toString(array));
// 輸出:[[I@158f9d3, [Ljava.lang.String;@79a2e7]
針對上述情況,Arrays.deepToString() 會遞迴走訪巢狀陣列,真正印出每一層的元素值。
System.out.println(Arrays.deepToString(array));
// 輸出:[[1, 2, 3], [aaa, bbb]]
無論是多維陣列、不規則陣列,還是混合型別的 Object[],deepToString() 都能正確呈現結構化內容,是除錯與日誌記錄的利器。
Arrays.toString()。Arrays.deepToString()。toString(),兩個方法皆適用。善用標準庫,少寫樣板碼,讓陣列輸出既優雅又可靠。