为了账号安全,请及时绑定邮箱和手机立即绑定

数组的长度属性在哪里定义?

数组的长度属性在哪里定义?

HUH函数 2019-07-06 14:56:19
数组的长度属性在哪里定义?我们可以确定ArrayList<E>使用公开方法size(),就像ArrayList<Integer> arr = new ArrayList(10);int size = arr.size();类似地,我们可以确定Array对象使用length财产String[] str = new String[10];int size =  str.length;鉴于size()方法ArrayList在ArrayList同学们,这里在哪里?length.的性质Array定义?
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

数组是java中的特殊对象,它们有一个名为length那就是final.

数组没有“类定义”(在任何.class文件中都找不到),它们是语言本身的一部分。

10.7.数组成员

数组类型的成员如下:

  • 这个

    public final

    场域

    length

    ,它包含数组的组件数。

    length

    可能是正数,也可能是零。
  • 这个public方法clone,它重写类中同名的方法。Object也不会抛出检查过的异常。类的返回类型。clone数组类型的方法T[]T[].

    多维数组的克隆很浅,也就是说它只创建一个新数组。子数组是共享的。

  • 从班级继承下来的所有成员

    Object

    的唯一方法

    Object

    不是继承的是它的

    clone

    方法。

资源:


查看完整回答
反对 回复 2019-07-06
?
长风秋雁

TA贡献1757条经验 获得超7个赞

它基本上是“特殊”的,有它自己的字节码指令:arraylength..所以这个方法:

public static void main(String[] args) {
    int x = args.length;}

编译成字节码,如下所示:

public static void main(java.lang.String[]);
  Code:
   0:   aload_0   1:   arraylength   2:   istore_1   3:   return

所以它不会被访问,就好像它是一个正常的字段。实际上,如果您试图获得它,就像它是一个正常的字段,就像这样,它失败了:

// Fails...Field field = args.getClass().getField("length");System.out.println(field.get(args));

因此不幸的是,每个数组类型的JLS描述都有一个公共的最终字段。length有点误导:


查看完整回答
反对 回复 2019-07-06
?
Qyouu

TA贡献1786条经验 获得超11个赞

它定义在Java语言规范:

数组类型的成员如下:

  • 这个

    public final

    场域

    length

    ,它包含数组的组件数。

    length

    可能是正数,也可能是零。

因为数组类型的数量是无限的(每个类都有一个对应的数组类型,并且然后),它们不能在类文件中实现;JVM必须动态执行。


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 673 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号