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是一个标记,当创建一个数组的时候,就会有一个这样的标记来标记数组长度。而这个标记不是属性或者是常量。

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

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值