【发布时间】:2016-10-08 06:10:05
【问题描述】:
Here 它说:
数组之所以有用主要是因为可以计算元素索引 在运行时。除其他外,此功能允许单个 用于处理任意多个数组元素的迭代语句。 因此,需要数组数据结构的元素 具有相同的大小并应使用相同的数据表示。
现代语言仍然如此吗?
例如,Java,你可以有一个对象或字符串数组,对吧?每个对象或字符串可以有不同的长度。我是否误解了上面的引用,或者像 Java 这样的语言以不同的方式实现了 Array?怎么样?
【问题讨论】:
Here 它说:
数组之所以有用主要是因为可以计算元素索引 在运行时。除其他外,此功能允许单个 用于处理任意多个数组元素的迭代语句。 因此,需要数组数据结构的元素 具有相同的大小并应使用相同的数据表示。
现代语言仍然如此吗?
例如,Java,你可以有一个对象或字符串数组,对吧?每个对象或字符串可以有不同的长度。我是否误解了上面的引用,或者像 Java 这样的语言以不同的方式实现了 Array?怎么样?
【问题讨论】:
在 java 中,除了原语之外的所有类型都是引用类型,这意味着它们是指向由 JVM 操作的某个内存位置的指针。
但编程语言主要有两种类型,fixed-typed like Java and C++ and dynamically-typed like python and PHP。在fixed-typed 语言中,无论String、Object 还是...
,您的数组都应包含相同的类型
但在dynamically-typed 中,有更多的抽象,你可以在数组中有不同的数据类型(虽然我不知道实际的实现)。
【讨论】:
:)
数组是内存中数据的规则排列。想象一排士兵,排成一列,每个人之间的间距完全相等。
因此可以通过从基地址查找来对它们进行索引。但所有项目必须是相同的大小。因此,如果它们不是,则存储指针或引用以使它们具有相同的大小。所有语言都使用该基础结构,除了有时称为“关联数组”的由键(通常为字符串)索引的结构,其中您有所谓的哈希表。本质上,散列函数将键转换为数组索引,并通过修复来解决冲突。
【讨论】: