黑马程序员技术交流社区

标题: 请教各位大神数组(如int[])的类放在哪里,为什么API里查不到 [打印本页]

作者: hysnxdss    时间: 2016-9-16 21:24
标题: 请教各位大神数组(如int[])的类放在哪里,为什么API里查不到
创建一个数组
int[] arr = new int[3];

通过arr.getClass().getName();得到类的全名称是
[I   恩? 这是什么鬼?  不是说要用合法的标识符起类名??
这是什么情况? 请大神指点

想知道为什么通过length属性可以获得数组长度而不是通过方法

作者: somnus-sir    时间: 2016-9-16 21:48
[I   表示一维数组的Int类型。
[[D  就是二维数组的double类型

//下面部分取自百度,我也没看懂,仅供参考

数组的length即不是方法,也不是字段。
   在一个数组对象上调用length,会被Java编译器编译成一条arraylength指令(Java   binary   code)。
而访问字段的语句会被编译成getfield或getstatic指令,调用方法的语句则会被编译成invokestatic,invokevirtual或invokespecial等指令。
作者: NewsmallWhite    时间: 2016-9-16 22:04
你可以定义一个一维数组,然后打印这个数组的引用,这样你就发现打印的是[I,表示这是个一维数组,二维数组就是[[I,I表示Int类型的数组,
作者: hysnxdss    时间: 2016-9-17 20:59
somnus-sir 发表于 2016-9-16 21:48
[I   表示一维数组的Int类型。
[[D  就是二维数组的double类型

也就是说数组被Java封装到啦底层,没有放到任何一个类里,当用的时候由JVM来解析再返回给掉用者

不懂?
为什么要这样设计?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2