3

我刚接触Java,我对数组初始化的程序感到震惊,因为它不工作并且包含一些垃圾。这就是我正在做的事情:

char[] expArray = new char[expEv.length];   //expEv.length is int - expEv is another array
//I have tried all following but not working

expArray = {'\0'};     // error i get: Array constants can only be used in initializers
expArray = {'',};
expArray = {'\0'};

System.out.println("array value: " + expArray); // prints " array value: [C@1cd761a " 

编辑:我也尝试过使用char[] expArray = new char[expEv.length] {'\0'};,但这不起作用

请帮助我并解释上下文的数组初始化。

4

2 回答 2

3

这些人给你的建议是不正确的,因为我打赌你仍然想创建一个可变大小的数组。事实上,你目前正在做的事情是 100% 没问题的。

Java 自动初始化未显式设置的变量。在您的情况下,数组的每个值都被初始化为空字符。是每个变量类型将被初始化的内容。

像这样打印时出现乱码的唯一原因是因为 Java 的内置toString()功能没有达到您的预期。这是内置toString()实际返回的内容:

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

如果您真的想打印数组的值,那么您需要执行以下操作:

System.out.println(Arrays.toString(expArray ));
于 2013-10-06T07:21:19.797 回答
-1

抱歉,Java 只是不允许您这样做。但是,这可能足够接近:

char[] expArray = {'\0'};
expArray = java.util.Arrays.copyOf(expArray, expEv.length);

但是,在使用 a 初始化数组的情况下'\0',这是完全没有必要的,因为数组创建本身会将所有元素清除为零。

于 2013-10-06T07:22:18.987 回答