Java:将数组传递给println

时间:2010-11-28 14:57:59

标签: 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的内存地址,并将其威胁为字符串。我在这儿?你能详细说明究竟发生了什么吗?谢谢。 (注意:我对如何打印数组不感兴趣。我知道。)

3 个答案:

答案 0 :(得分:5)

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

  

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

    getClass().getName() + '@' + Integer.toHexString(hashCode())

要实现您想要的目标,请使用Arrays#toString()

System.out.println(Arrays.toString(a));

答案 1 :(得分:0)

是的,它正在打印内存地址。请参阅此处的问答部分:http://www.cs.princeton.edu/introcs/14array/使用Arrays.toString(a)将数组a转换为String,如果要输出数组内容,可以打印{。}}。 p>

答案 2 :(得分:0)

println()会调用传递给它的toString()方法。在数组的情况下,这会导致一些代表数组对象的哈希码。