[java]数组

pyx93 2015-09-02 05:14:04
比如int[] s=new int[]{1,2};
这里用到了new说明是一个对象,但是这个类的封装在哪里呢?
比如包装类我能够看到源码,但是数组缺不行
为什么?
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pyx93 2015-09-07
  • 打赏
  • 举报
回复
谢谢各位的答案
  • 打赏
  • 举报
回复
引用 楼主 pyx93 的回复:
比如int[] s=new int[]{1,2}; 这里用到了new说明是一个对象,但是这个类的封装在哪里呢? 比如包装类我能够看到源码,但是数组缺不行 为什么?
说的很对,new说明要在堆空间开辟空间来存储,数组就是相同类型数据的组合 当你new的时候,无论静态初始化(初始化数组与给数组元素赋值同时进行)或者动态初始化(分开进行),数据的长度已经确定,存储的空间也就确定,需要做的只是操作内部的元素,对于数组我们的操作仅仅是通过下标来对数组元素进行操作,没有方法。也没有必要了解其内部结构,因为其大小,数据类型,存放顺序都是确定的。
sxiaobei 2015-09-02
  • 打赏
  • 举报
回复
这是个有意思的问题,我也遇到过同样的问题,你能看到源码的那些类,不管是jdk源码还是自己编写的类都是我们自己用java实现的,也就是我们自己可控的,这些类都是通过类加载器加载的,所以你可以看到源码,但是数组并不是有用户自己实现的,是由jvm虚拟机实现的,如果你要加载一个普通的类,那么找到对应的类加载器去加载,但是你如果要加载一个数据类型的话,那么jvm虚拟机会生成一个代表数组的数组对象,然后如果数组的元素不是基本类型的话,才会加载数组中的元素的类型,总之你看不到数组源码的原因是因为数组不是我们自己加载的,是有jvm生成的,所以你才会看不到数组的源码,希望能帮助到你,谢谢!
hwxia 2015-09-02
  • 打赏
  • 举报
回复
数组不同于类,new可以理解为开辟内存空间,数组元素可以存值或引用,所以数组可以理解为复合类型,与值、引用并列

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧