java - Java 数组中的长度是如何实现的?

标签 java arrays

我想知道 Java 数组的 length 的实现。我知道使用 arrayName.length 为我们提供了数组中元素的数量,但想知道这是一个方法/函数还是只是 Array 的一个数据成员?

我猜它一定是一个数据成员,因为我们在调用它时不使用括号()。但是如果它是一个数据成员,这个 length 的值是如何/何时分配/计算的?

最佳答案

根据 Java 语言规范(特别是 §10.7 Array Members),它是一个字段:

  • The public final field length, which contains the number of components of the array (length may be positive or zero).

在内部,值可能存储在对象头中的某个位置,但这是一个实现细节,取决于具体的 JVM 实现。

HotSpot VM(流行的 Oracle(以前的 Sun)JRE/JDK 中的一种)stores the size in the object-header :

[...] arrays have a third header field, for the array size.

关于java - Java 数组中的长度是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950155/

相关文章:

java - ListView 未反射(reflect) notifyDataSetChanged() 的更改

java - 为什么我的 html 文件不适合不同的 Android 屏幕尺寸?

java - 如何将字符串转换为二维字符数组 JAVA

android - 布局看起来不同?

javascript - 组合来自不同变量的数组以随机填充 javascript

java - 将 UDP 套接字绑定(bind)到多个端口

java - 删除后 TreeMap 迭代器行为不一致

python - 如何从数组中删除特定元素而不删除其以后出现的元素

java - 如何在python中使用递归从java代码中解析方法体?

java - 插入排序与二进制搜索?