java数组真的有length属性吗?希望大虾们来探讨

java中数组有一个length属性.几乎所有人都是这样认为的,但事实上真的有吗?请看下面代码:

		Object[] object = new Object[100];
		int i = object.getClass().getDeclaredFields().length;
		/* 为什么输出结果是0?这可不可以断定
		 * 数组中没有属性呢?
		 * 这说明length不是数组的属性
		 * 当然无论是不是属性,肯定不是方法
		 * */
		System.out.println(i);//out:0

 我的个人分析与理解:

第一、数组肯定是一个继承了Object的类,这点毋庸置疑

第二、length肯定不是方法

第三、length肯定也不是我们正常java类中的属性(除非反射有问题)

第四、有人可能说它是public static final int length = ?  (此值编译的时候确定),即length是一个常量属性

但是看代码

Object[] object = new Object[100];
Field field = object.getClass().getField("length");//抛NoSuchFieldException
System.out.println(field.get(null));//得到常量的值

 说明它不是常量

第五、我个人猜想length是一个标记,当创建一个数组的时候,就会有一个这样的标记来标记数组长度。而这个标记不是属性或者是常量。

希望各位大虾们拍砖,使劲的拍砖,谢谢大笑

 

 

 

 

 

你可能感兴趣的:(JAVASE)