Java:将数组传递给println
下面是一个精心设计的示例,我刚刚编写了这个示例来帮助我理解java的内部工作原理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的内存地址,并将其作为字符串进行威胁。我就在这
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));