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

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

最佳答案

这些人给您的建议是不正确的,因为我敢打赌您仍然想创建一个可变大小的数组。实际上,您当前正在执行的操作是100%罚款。

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

这样打印时出现乱码的唯一原因是因为Java内置的toString()无法满足您的期望。这是内置toString()实际上返回的内容:

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

如果您确实要打印数组的值,则需要执行以下操作:
System.out.println(Arrays.toString(expArray ));

10-08 13:43