java数组规定长度_为什么Java数组固定长度?

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

但是作为一般观点,实现可变长度容器要复杂得多,并且有很多策略可以实现它(链表,内存重新分配…).

如果作者在20世纪90年代早期将数组定义为可变长度,则会产生一些不必要的后果:

>数组的核心JVM定义会复杂得多,并且所有实现都将被迫在低级别提供这种复杂性;

>在给定的JVM中会有一个“一刀切”的大小调整实现,这可能无法满足许多用例;

>不同的实现可能会引入大的性能差异,这可能需要额外的复杂约束定义;

>它引入了边界检查数组的线程安全问题,因为a.length变得可变;

>表达扩展的额外语言支持=>更大的语言;

>对数组下标的性能影响,可能缺乏O(1)索引;

> C和C程序员不熟悉的领域,他们习惯于不可扩展的数组(或者在库中提供这样的机制);

>在一块石头上铸造一个已经由更高级别的结构(当天的java.util.Vector,现在是Java Collections,Guava等)充分处理的可变长度机制.

总而言之,人们普遍认为Java诞生的C语言系列中的数组是构建更高级别结构的简单工具 – 当时,固定大小限制并没有出乎意料.我们现在可以选择这种结构的实现(LinkedList,ArrayList等),它们提供了一系列运行时行为,大多数开发人员都使用这些抽象.

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

zh222333

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值