Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:将数组传递给println_Java_Arrays - Fatal编程技术网

Java:将数组传递给println

Java:将数组传递给println,java,arrays,Java,Arrays,下面是一个精心设计的示例,我刚刚编写了这个示例来帮助我理解java的内部工作原理 public class Main { public static void main(String[] args) { int[] a; a = new int[12]; System.out.println(a); } } 这打印出一些垃圾。由于a是通过引用传递的,因此我假定println获取a的内存地址,并将其作为字符串进行威胁。我就在这

下面是一个精心设计的示例,我刚刚编写了这个示例来帮助我理解java的内部工作原理

public class Main {

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


    }
}

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

是的,它正在打印内存地址。请参阅此处的Q&A部分:使用
数组。toString(A)
将数组
A
转换为
字符串,如果要输出数组的内容,可以打印该字符串。

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

class对象的toString方法返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

    getClass().getName() + '@' + Integer.toHexString(hashCode())
为了达到你想要的,而不是使用


println()
调用传递给它的任何内容的
toString()
方法。对于数组,这会产生一些表示数组对象的哈希代码。

不是内存地址,而是哈希代码(可能是地址,不能)。。。
System.out.println(Arrays.toString(a));