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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yan5108652 中级黑马   /  2013-5-2 04:25  /  2514 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yan5108652 于 2013-5-5 14:30 编辑

java基本数据类型的数组,比如int[4]=5,这个5是确实的可以被删除的,但是由于
数组本身的机制不允许其内部存在‘洞’,以避免增加无谓的算法负荷,所以
每删除一项的时候都会将该数据之后的数据往前调一个位置,保证该数组不存在‘洞’
所以这样理解 java数组里的项可以真正被删除以形成'洞',但是由于没有意义,
所以普遍就认为java数组不可被删除,只是覆盖原来的数据,就比如int[x+1]=int[x];

这种理解对不?

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
你这样理解很对!!
回复 使用道具 举报
     java 数组被定义完之后是不可以更改数组的长度的,想要改变数组的长度 可以通过System中的arraycopy来实现也就是说 只能将一个数组重新copy到另一个数组中去,新建一个符合要求的数组。  不过貌似有一种可以递增的 好像是StringBuffer的内容 具体我也没有记清楚,追加东西的 你可以去查查API。 呵呵

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
学数据结构的时候,严蔚敏的书,凡是遇到这种数组的增删改查,都是以增删点为基点,后面的往前或者往后移动,就是你说的覆盖问题。倒是没听说洞的问题
回复 使用道具 举报
没看明白什么意思。
回复 使用道具 举报
没看明白...
回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
数组是以顺序结构的形式保存在堆内存中的,数组首元素地址就是该数组的地址,数组的下标就是指针,打印的时候,指针变量指向对应的指针,打印出该元素,而数组就可以理解成很多同类盒子(变量)顺序连接组成的大盒子,大盒子内装了小盒子,小盒子内装数据,所以我认为在删除数组元素的时候删除的是盒子内的数据,盒子并没有被删除,装数据的容器还在,举个例子:如楼主所说int[4]=5,   这个5可以删除,但是数组中4这个地址装数据的盒子并没有被删除, 在删除数组元素时并没有改变定义数组在内存中的状态。因为数组是顺序存储的,就像学生站路队一样,,中间忽然少了个人,后面的人立马跟上补上走掉那个人的位置,(楼主所说的覆盖),这样原定长度的数组最后元素的地址就会造成空缺,系统默认空字符补上(\0).   下面是我画的数组的存储形式图(个人理解仅供参考,呵呵)

数组.png (11.51 KB, 下载次数: 0)

数组.png

数组2.png (12.5 KB, 下载次数: 0)

数组2.png

评分

参与人数 2技术分 +1 黑马币 +10 收起 理由
田磊阳 + 1
yan5108652 + 10 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马