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

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

我们可以确定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()方法ArrayListArrayList同学们,这里在哪里?length.的性质Array定义?


HUH函数
浏览 674回答 3
3回答

哆啦的时光机

数组是java中的特殊对象,它们有一个名为length那就是final.数组没有“类定义”(在任何.class文件中都找不到),它们是语言本身的一部分。10.7.数组成员数组类型的成员如下:这个public&nbsp;final场域length,它包含数组的组件数。length可能是正数,也可能是零。这个public方法clone,它重写类中同名的方法。Object也不会抛出检查过的异常。类的返回类型。clone数组类型的方法T[]是T[].多维数组的克隆很浅,也就是说它只创建一个新数组。子数组是共享的。从班级继承下来的所有成员Object的唯一方法Object不是继承的是它的clone方法。资源:JLS-阵列

长风秋雁

它基本上是“特殊”的,有它自己的字节码指令:arraylength..所以这个方法:public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x&nbsp;=&nbsp;args.length;}编译成字节码,如下所示:public&nbsp;static&nbsp;void&nbsp;main(java.lang.String[]); &nbsp;&nbsp;Code: &nbsp;&nbsp;&nbsp;0:&nbsp;&nbsp;&nbsp;aload_0&nbsp;&nbsp;&nbsp;1:&nbsp;&nbsp;&nbsp;arraylength&nbsp;&nbsp;&nbsp;2:&nbsp;&nbsp;&nbsp;istore_1&nbsp;&nbsp;&nbsp;3:&nbsp;&nbsp;&nbsp;return所以它不会被访问,就好像它是一个正常的字段。实际上,如果您试图获得它,就像它是一个正常的字段,就像这样,它失败了://&nbsp;Fails...Field&nbsp;field&nbsp;=&nbsp;args.getClass().getField("length");System.out.println(field.get(args));因此不幸的是,每个数组类型的JLS描述都有一个公共的最终字段。length有点误导:

Qyouu

它定义在Java语言规范:数组类型的成员如下:这个public final场域length,它包含数组的组件数。length可能是正数,也可能是零。因为数组类型的数量是无限的(每个类都有一个对应的数组类型,并且然后),它们不能在类文件中实现;JVM必须动态执行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java