我只是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 ));