2013-10-06 182 views
2

我只是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: [[email protected] " 

编辑:我也曾尝试使用char[] expArray = new char[expEv.length] {'\0'};但这无法正常工作,

请帮我这一点,并解释上下文中的数组初始化。

回答

3

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

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

打印时出现乱码的唯一原因是因为内置在toString()中的Java没有达到您期望的效果。下面是内置toString()真的返回:

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

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

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

很抱歉,但Java的只是没有按不允许你这样做。然而,这可能是足够接近:

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

然而,在初始化所述阵列与'\0'的情况下,是完全没有必要的,因为阵列创建本身将清除所有的元素为零。