gpt4 book ai didi

arrays - 动态数组与可变长度数组

转载 作者:行者123 更新时间:2023-12-04 00:39:48 28 4
gpt4 key购买 nike

动态数组和可变长度数组有什么区别?

维基百科中有两张关于此的单独表格:

1)关于动态数组: https://en.wikipedia.org/wiki/Dynamic_array

2) 关于变长数组: https://en.wikipedia.org/wiki/Variable-length_array

但是区别不是很明显。

你能用某种编程语言给出一个例子吗?动态数组不是可变长度的,反之亦然。

最佳答案

数组有四种:

1) 动态数组

2) 变长数组

3)定长数组

4) 静态数组

让我们更详细地考虑这四个数组。

1) 动态数组

在这种情况下,数组中有一个 API 可以更改 length 变量。可以是直接修改长度的方法

setSize(int newLength)

或间接修改它的方法:

add(Object newElement)

remove(Object toBeRemoved)

这两种方法都会在添加/删除元素后修改长度。模拟动态数组的 Java 示例:

java.util.ArrayList

2) 变长数组

可变长度数组是动态数组的特例。在这种情况下,length 是只读的,数组中没有 API 可以修改此变量。但是这个变量可以被系统以其他方式改变。模拟可变长度数组的 Java 示例 - 像 int[] 这样的常规 java 数组。让我们考虑这个例子:

int[] a = new int[5]; System.out.println(a.length);

a = new int[10]; System.out.println(a.length);

在这种情况下,length 变量已更改,但我们不能直接修改它

a.length = 20;

3) 定长数组

定长数组是变长数组的特例。在这种情况下,一旦为 length 赋值,我们就不能再修改它。但重要的是要注意 length 变量仍然在运行时确定模拟此行为的 Java 示例:最终数组变量,如 final int[]

让我们考虑这个例子:

final int[] a;

if (someVar > 0) { a = new int[100]; } else { a = new int[200]; }

在这种情况下,a.length 是 100 或 200,并且仍然在运行时确定。

4) 静态数组

静态数组是定长数组的特例。

在这种情况下,length 不仅可以更改,还可以在运行时确定。Java 中此类数组的示例可以是以下构造:

{1, 2, 3, 100, 200, 500}

这个构造只能在初始化时赋值给一个变量

int[] a = {1, 2, 3};

但是如果我们尝试像这样重新分配

a = {1, 2};

我们得到编译错误。

模拟此类数组的 Java 示例:

final int[] a = {1, 2, 3};

关于arrays - 动态数组与可变长度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33347751/

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