以下是我刚刚编写的一个人为例子,以帮助我理解java的内部工作原理。
public class Main {
public static void main(String[] args) {
int[] a;
a = new int[12];
System.out.println(a);
}
}
这会打印出一些垃圾。由于a是通过引用传递的,我假设println
获取a的内存地址,并将其威胁为字符串。我在这儿?你能详细说明究竟发生了什么吗?谢谢。 (注意:我对如何打印数组不感兴趣。我知道。)
答案 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()
方法。在数组的情况下,这会导致一些代表数组对象的哈希码。