gpt4 book ai didi

java - 为什么Java数组是固定长度的?

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:23 26 4
gpt4 key购买 nike

int[] array = new int[10]; // Length is fixed when the array is created.

The length of an array is established when the array is created. After creation, its length is fixed.

为什么一定要这样?

最佳答案

正如其他答案所指出的,固定大小是定义的一部分,您必须与原作者交谈才能找到真相。

但总的来说,实现可变长度容器要复杂得多,并且有许多实现它的策略(链表、内存重新分配......)。

如果作者在 1990 年代初期就将数组定义为可变长度,将会出现一些不良后果:

  • 数组的核心 JVM 定义会复杂得多,所有实现都将被迫在低级别提供这种复杂性;
  • 在给定的 JVM 中会有“一刀切”的大小调整实现,这可能无法满足许多用例;
  • 不同的实现可能会引入较大的性能差异,这可能需要额外的复杂约束定义;
  • 它引入了围绕数组边界检查的线程安全问题,因为 a.length 变得可变;
  • 用于表达扩展的额外语言支持 => 更大的语言;
  • 对数组下标的性能影响,可能缺乏 O(1) 索引;
  • C 和 C++ 程序员不熟悉的领域,他们习惯了不可扩展的数组(或在库中提供了此类机​​制);
  • 确定可变长度机制已经由更高级别的结构(过去是 java.util.Vector,现在是 Java Collections、Guava 等)充分处理。

总而言之,Java 诞生的 C 语言家族中的数组被广泛认为是用于构建更高级别结构的简单工具 - 当时,固定大小限制的惊喜为零。我们现在可以选择此类结构(LinkedListArrayList 等)的实现,这些结构提供一系列运行时行为,大多数开发人员使用这些抽象。

关于java - 为什么Java数组是固定长度的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35846527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com