Phương thức Arrays.deepToString(Object[]) trả về biểu diễn chuỗi của nội dung sâu (deep contents) của mảng được chỉ định. Khác với Arrays.toString() chỉ in mảng 1 chiều, deepToString đệ quy in các mảng lồng nhau (nested arrays) bao gồm cả mảng đa chiều.
Ví dụ 1: Mảng 1 chiều đối tượng
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
Object[] ob = {"One", "Two", "Three", "Four"};
System.out.println("Các phần tử mảng:");
for (Object value : ob) {
System.out.println("Value = " + value);
}
System.out.println("Biểu diễn chuỗi của mảng:");
System.out.println(Arrays.deepToString(ob));
}
}
Kết quả
Các phần tử mảng: Value = One Value = Two Value = Three Value = Four Biểu diễn chuỗi của mảng: [One, Two, Three, Four]
Ví dụ 2: Mảng 2 chiều (ma trận)
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
int[][] arr = new int[3][3];
arr[0][0] = 10; arr[0][1] = 20; arr[0][2] = 30;
arr[1][0] = 40; arr[1][1] = 50; arr[1][2] = 75;
arr[2][0] = 100; arr[2][1] = 150; arr[2][2] = 200;
System.out.println(Arrays.deepToString(arr));
}
}
Kết quả
[[10, 20, 30], [40, 50, 75], [100, 150, 200]]
Ví dụ 3: Mảng lồng nhau phức tạp
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
Object[] complex = {
"String",
new int[]{1, 2, 3},
new Object[]{"nested", new double[]{1.1, 2.2}},
null
};
System.out.println(Arrays.deepToString(complex));
}
}
Kết quả
[String, [1, 2, 3], [nested, [1.1, 2.2]], null]
So sánh: toString() vs deepToString()
int[][] matrix = {{1, 2}, {3, 4}};
System.out.println(Arrays.toString(matrix));
// Output: [[I@15db9742, [I@6d06d69c] (hashcode của mảng con)
System.out.println(Arrays.deepToString(matrix));
// Output: [[1, 2], [3, 4]] (nội dung thực)
| Phương thức | Dùng cho | Xử lý mảng lồng nhau |
|---|---|---|
Arrays.toString() | Mảng 1 chiều (primitive hoặc object) | Không (in hashcode) |
Arrays.deepToString() | Mảng đa chiều, mảng lồng nhau, mảng Object chứa mảng | Có (đệ quy) |
Lưu ý
deepToStringchỉ hoạt động với mảng kiểu Object[] (bao gồm mảng primitive đa chiều vìint[][]làObject[]).- Nếu mảng chứa tự tham chiếu (circular reference), sẽ ném
StackOverflowError. - Trả về
"null"nếu tham số là null.