初始化字符数组

3

我刚接触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: [C@1cd761a " 

编辑:我也尝试使用char[] expArray = new char[expEv.length] {'\0'};,但这并不起作用。

请帮忙解决这个问题,并解释一下上下文中的数组初始化。

2个回答

3
这些人给你的建议是不正确的,因为我打赌你仍然想创建一个可变大小的数组。实际上,你目前所做的完全没问题。
Java会自动初始化未明确设置的变量。在你的情况下,数组的每个值都初始化为null字符。这里是每种变量类型将被初始化的内容
你之所以在打印时得到了乱码,唯一的原因是Java内置的toString()没有做你期望的事情。这是内置的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'初始化数组的情况下,这是完全不必要的,因为数组本身的创建将清除所有元素为零。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接