在Java中可以初始化空白的char[]数组吗?
问题解答
你提到的char[] reverse;声明方式是完全合法可用的,符合你不确定初始取值时的使用需求:
- 该写法仅完成数组引用的声明,不会分配实际的数组内存空间,你可以在后续确定数组长度、具体取值后再对其进行赋值操作。
- 你使用
char[] reverse = {}报错的原因是,该写法会初始化一个长度为0的固定长度数组,Java数组的长度在创建后无法修改,后续你尝试写入内容时会因为空间不足或者下标越界抛出错误。
后续正确赋值的两种常用方式
- 先确定长度创建数组,再逐个赋值
// 先声明 char[] reverse; // 后续确定需要存储6个字符时,创建对应长度的数组 reverse = new char[6]; // 逐个下标赋值 reverse[0] = 'w'; reverse[1] = 'o'; // 其余位置赋值逻辑同理
- 直接赋值完整的字面量数组
// 先声明 char[] reverse; // 后续直接赋值确定内容的数组,不需要提前指定长度 reverse = new char[]{'w', 'o', 'r', 'l', 'd', '!'};
注意事项
- 不要在给
reverse分配实际数组对象前访问它的下标或者length属性,否则会抛出空指针异常。 - 如果你后续需要频繁调整存储内容的长度,更推荐使用
StringBuilder或者ArrayList<Character>这类动态容器,避免数组长度固定的限制。
内容的提问来源于stack exchange,提问作者Purusottam Khandelwal
相关产品推荐
相关产品推荐

