前者(.length)甚至不是一个函数,它如何返回长度?
答案 0 :(得分:3)
length
在数组中不起作用的原因是它是一个字段。特别是,Java语言规范部分10.7指定的public final
。
虽然ArrayList(1.0库的ad Vector)有length()
方法,但要实现的关键是这个值可以改变。您在Vector上调用了add(Object o)
,并且您已经更改了它的长度。
另一方面,您无法更改数组的长度。
创建数组对象后,其长度永远不会改变。要使数组变量引用不同长度的数组,必须为变量分配对不同数组的引用。
(来自JLS Section 10.2 - 数组变量)
因此,最简单的方法是将长度作为一个字段。一个是公开的,无法改变的。
在Java 1.0天内实现,HotSpot并不像现在这样先进。它无法通过内联方法完成所有优化。因此,为了使需要它的情况更快地进行数组访问,它就是一个字段。
Stack Overflow上的相关阅读:length and length() in java