日期:2014-05-20  浏览次数:20737 次

再请教一个超级新手的问题。
比如说
int[] arr = new int[5]
System.out.println(arr.length);

在这里arr.length是 arr的长度,那么length是什么啊?

请高手指教。

------解决方案--------------------
就是长度。。。。确切的说是属性。。。
------解决方案--------------------
1。length不是array的方法或者属性 
这个很好证明:new个数组出来 getDeclaredFields()是0 
2。java对数组的操作是指令级的。
数组的length即不是方法,也不是字段。 
在一个数组对象上调用length,会被Java编译器编译成一条arraylength指令(Java binary code)。 

------解决方案--------------------
.length是数组的一个属性,返回的是数组的长度。
一般最好用getLength()这个方法。
------解决方案--------------------
数组的 length 静态成员和类的 class 静态成员都是由 Java 编译器在编译后加上的,是一个只读成员,不允许被修改。

一个数组对象在内存中,头 4 个字节就是用来保存 2 楼所说的 arraylength 值,也就是数组的 length 成员,在这之后才是数组中每个索引区的数据空间。