import java.util.*;
public class Arrays {
public static void main(String[] args) {
int arr[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
System.out.println(arr[0]);
}
} 我期望 {1,2,3} 但得到 [I@4617c264.我该怎么办?
数组是低级构造,不执行/“奇怪”地执行各种操作。
他们不做的事情之一就是增长或收缩。它们的大小是您初始化它们时的大小,无法更改。
他们拥有的另一件事是“损坏”(不是“损坏”,因为他们被窃听了。“损坏”是指他们按照规范要求他们必须做的事情,但规范所说的是无用且奇怪的)是
toString()
、 equals()
和 hashCode()
。
调用
System.out.println(x)
在 x 上调用 toString()
,这是一个数组,而数组 toString 已“损坏”(useles:它打印其二进制类型,[I
,后跟 @
,后跟其系统哈希) ID。它不打印值)。
尝试:
Arrays.toString(array)
:
System.out.println(Arrays.toString(arr[0]));
请注意,尝试
Arrays.toString
所有 arr
也不起作用:arr
是一个 int 数组的数组,因此 toStringing 通过调用其 toString 来打印每个子数组,其中 .. 是数组上的 toString坏了。
幸运的是,有:
deepToString
:
System.out.println(Arrays.deepToString(arr));