【发布时间】:2013-09-08 15:06:15
【问题描述】:
我正在使用 Java 中的char[] 玩arround,并使用以下示例代码:
char[] str = "Hello World !".toCharArray();
System.out.println(str.toString());
System.out.println(str);
我得到以下输出:
[C@4367e003
Hello World !
我对此有一些疑问:
[C@4367e003代表什么?是内存地址吗?数字的含义是什么?[C@是什么意思?我一直以为在一个对象上调用
println()会调用这个对象的toString方法,但好像不是这样?
谢谢!!
【问题讨论】:
-
新字符串(字符数组);从 char 数组创建一个字符串,是的,那是一个内存地址,我认为 C 显示它的一个 char 数组,而 at 字面意思是该地址是内存中保存数组的位置。
-
由于数组是类,它们是从
Object扩展而来的,并且不会覆盖toString方法,所以它们将使用Object#toString(阅读链接以了解System.out.println(array)中的结果)。 -
@tieTYT 不是重复的。这个问题是为什么
System.out.println(str);打印数组中的值,而不是str.toString();的值。