每当我创建一个二维数组并用java中的元素初始化它,然后尝试打印单个元素(数组)但它返回垃圾值时

问题描述 投票:0回答:1
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.我该怎么办?

java multidimensional-array output
1个回答
0
投票

数组是低级构造,不执行/“奇怪”地执行各种操作。

他们不做的事情之一就是增长或收缩。它们的大小是您初始化它们时的大小,无法更改。

他们拥有的另一件事是“损坏”(不是“损坏”,因为他们被窃听了。“损坏”是指他们按照规范要求他们必须做的事情,但规范所说的是无用且奇怪的)是

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));
© www.soinside.com 2019 - 2024. All rights reserved.