空数组和空数组有什么区别?

新手上路,请多包涵

如果一个 int 数组的各个元素没有被初始化,那么它们默认存储的是什么?我显然发现有类似空数组或空数组的东西。有什么区别,哪个适用于我的第一个问题?

原文由 user4360892 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 334
2 个回答

从技术上讲,没有 空数组 这样的东西;但由于数组是对象,数组类型是引用类型(即:数组变量仅包含对数组的 _引用_),这意味着数组变量可以是 null 而不是实际指向数组:

 int[] notAnArray = null;

数组是长度为零的数组;它没有元素:

 int[] emptyArray = new int[0];

(并且 永远不能 有元素,因为数组的长度在创建后永远不会改变)。

当您创建一个 空数组而不为其元素指定值时,它们默认为类似零的值 0 对于整数数组, null 对于对象类型的数组, ETC。;所以这:

 int[] arrayOfThreeZeroes = new int[3];

与此相同:

 int[] arrayOfThreeZeroes = { 0, 0, 0 };

(虽然这些值之后可以重新分配;数组的长度不能改变,但它的元素可以改变)。

原文由 ruakh 发布,翻译遵循 CC BY-SA 3.0 许可协议

数组将其成员初始化为其默认值。对于 int 默认值为 0。对于 Objectnullnull 数组是 null 数组引用(因为数组是 Java 中的引用类型)。

JLS-4.12.5 变量初值 部分说

对于 int 类型,默认值为零,即 0。

对于所有引用类型(§4.3),默认值为 null。

原文由 Elliott Frisch 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏