我刚接触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'};
,但这不起作用
请帮助我解释上下文的数组初始化。
答案 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'
初始化数组的情况下,这是完全没必要的,因为数组创建本身会将所有元素清除为零。