在java中,为什么数组引用变量不能保存字符数组的地址?
我想打印字符数组的地址。当我尝试这样做时,我得到一个字符串输出为“ABC”,而不是得到char数组的地址在java中,为什么数组引用变量不能保存字符数组的地址?,java,arrays,Java,Arrays,我想打印字符数组的地址。当我尝试这样做时,我得到一个字符串输出为“ABC”,而不是得到char数组的地址 class P { public static void main(String [] args) { char [] ch = {'A','B','C'}; System.out.println(ch); } } 对于大多数对象,如果将它们传递给println,则会得到对象的正常toString()表示。对于数组,它看起来像[C@6
class P
{
public static void main(String [] args)
{
char [] ch = {'A','B','C'};
System.out.println(ch);
}
}
对于大多数对象,如果将它们传递给
println
,则会得到对象的正常toString()
表示。对于数组,它看起来像[C@6d4b1c02
但是,有专门编写的函数来接受char
数组。因此,如果调用该函数,就不会得到数组的toString()
表示;而是得到数组的内容,在本例中是ABC
如果要调用println
System.out.println((Object) ch);
您将获得无法穿透的
[C@6d4b1c02
output.您可以查看println(char[]ch)
的char[]
实现,它最终调用下面的方法
public void write(char cbuf[]) throws IOException {
write(cbuf, 0, cbuf.length);
}
此方法将数组元素从0
写入数组长度,这就是您获得ABC
的原因
如果您想要哈希代码类型的值,您可以更改您的方法
System.out.println(ch.toString());
因为有一个重写专门用于字符数组:请您详细解释一下,因为我是初学者,希望了解详细信息。解释就在khelwood的注释链接上。
toString
方法的输出从不给出“地址”对象的。您可能指的地址是哈希代码。我怀疑您是少数真正想要在数组上调用toString()
的无意义输出的人之一:)