初始化字符数组

时间:2013-10-06 07:12:39

标签: java arrays

我刚接触Java并且我在使用Array初始化的程序中感到震惊,因为它不起作用并且包含一些垃圾。这就是我在做的事情:

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'};,但这不起作用

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

2 个答案:

答案 0 :(得分:3)

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

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

在这样打印时,你得到胡言乱语的唯一原因是因为内置toString()的Java并没有达到你期望的效果。以下是内置toString()实际返回的内容:

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

如果你真的想要打印数组的值,那么你需要做这样的事情:

System.out.println(Arrays.toString(expArray ));

答案 1 :(得分:-1)

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

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

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