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

2022-09-01 01:02:25

我想知道Java数组的实现。我知道使用会给我们数组中的元素数量,但想知道这是一个方法/函数,还是它只是数组的数据成员?lengtharrayName.length

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


答案 1

根据 Java 语言规范(特别是 §10.7 数组成员),它是一个字段:

  • 字段 ,它包含数组的分量数(长度可以是正数或零)。publicfinallength

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

HotSpot VM(流行的Oracle(以前称为Sun)JRE / JDK中的VM)将大小存储在对象标头中

[...]数组有第三个标头字段,用于数组大小。


答案 2

你是对的,是一个数据成员,而不是一个方法。length

数组教程中

数组的长度是在创建数组时确定的。创建后,其长度是固定的。