8

我很好奇为什么当您可以使用 ArrayLists 时使用 Arrays?使用 ArrayList 不是更好吗?

4

6 回答 6

6

看看这个比较

如您所见,这两种构造之间存在重要差异。您会发现使用其中一种(或两者)的 API,并且您必须了解两者之间的优缺点和功能差异。

一个特别的区别是本机数组可以存储基元,而不会出现装箱/拆箱的低效。当您拥有表示数据流/数据集的相当大的数组时,这很重要。

另请注意,anArrayList不是协变。也就是说, anInteger[]是 a Number[],但 anArrayList<Integer>不是 a ArrayList<Number>。有关更多详细信息,请参见此处

于 2013-08-06T16:14:55.603 回答
4

数组和ArrayLists 服务于不同的,虽然有时是重叠的,目的。

但除此之外,一个简单的事实是您不会在真空中编码,因此您将使用涉及数组的 API,因此学习它们不是可选的。数组是计算机科学中绝对基础的结构。

于 2013-08-06T16:14:47.343 回答
4

数组可以做很多你不能用ArrayLists 做的事情。例如,

  1. byte[]使用 a或 a从文件中读取多个字节或代码单元char[]
  2. 调用处理向量或表示为float[]s 或double[]s 的矩阵的本机数字或图形库

您可以使用其他非原始数组抽象来代替ArrayList,但有时表示划分为数字单元的连续内存区域的最佳方法是使用数组。

于 2013-08-06T16:20:41.797 回答
2

在编程基础上打下适当的基础非常重要。这些基础知识包括变量类型、函数、参数、数组等。没有正确的基础,你所学的其他一切都会因为没有正确的基础而崩溃。换句话说,假设你想学习一门语言,你可以开始通过记忆来学习整个短语,但是让一些单词从舌头上滚下来并开始消化和拼凑如何用单词而不是暴力破解它并记住你需要的所有句子。

于 2013-08-06T16:16:55.087 回答
2

如果您希望更好地了解“幕后”发生的事情,或者如果您想学习较低级别的语言(如 C 或汇编语言),那么学习数组非常重要。

请问你是在哪里学Java的?这是给学校/大学的吗?如果是这样,请尝试从使用数组中获得一些东西,因为它们将用于诸如数据结构之类的课程中,尤其是当您开始使用一种没有 ArrayList 等效语言的语言时。

尽你所能了解它。了解正在发生的事情是有益的。

于 2013-08-06T16:18:33.543 回答
0
String []array = { "I","DO","NOT","RESIZE" };
于 2013-08-06T16:22:56.420 回答