Java:将数组传递给println

non*_*ame 2 java arrays

以下是我刚刚编写的一个人为例子,以帮助我理解java的内部工作原理.

public class Main {

    public static void main(String[] args) {
        int[] a;
        a = new int[12];
        System.out.println(a);


    }
}
Run Code Online (Sandbox Code Playgroud)

这打印出一些垃圾.由于a是通过引用传递的,我假设println获取a的内存地址,并将其作为字符串进行威胁.我在这儿?你能详细说明究竟发生了什么吗?谢谢.(注意:我对如何打印数组不感兴趣.我知道.)

Bal*_*usC 5

数组被视为对象,因此默认结果Object#toString()将用作字符串表示.另请参阅Javadoc的这个摘录(单击链接):

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符"@"和对象的哈希码的无符号十六进制表示组成.换句话说,此方法返回一个等于值的字符串:

    getClass().getName() + '@' + Integer.toHexString(hashCode())
Run Code Online (Sandbox Code Playgroud)

要实现你想要的,而不是使用Arrays#toString().

System.out.println(Arrays.toString(a));
Run Code Online (Sandbox Code Playgroud)