数组在java里是一种特殊类型,既不是基本数据类型也不是引用数据类型。
有别于普通的“类的实例”对象,java里数组不是类,所以也就没有对应的class文件,数组类型是由jvm从元素类型合成出来的;
在jvm中获取数组的长度是用arraylength这个专门的字节码指令的;
在数组的对象头里有一个_length字段,记录数组长度,只需要去读_length字段就可以了。
所以ArrayList中定义的最大长度为Integer最大值减8,这个8就是就是存了数组_length字段。
【ArrayList的最大size为啥是integer最大值减8】
最新推荐文章于 2023-02-23 09:32:48 发布