A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

创建一个数组
int[] arr = new int[3];

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

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

3 个回复

倒序浏览
[I   表示一维数组的Int类型。
[[D  就是二维数组的double类型

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

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

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

不懂?
为什么要这样设计?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马