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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 还不到时候 中级黑马   /  2013-11-23 14:31  /  1632 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 还不到时候 于 2013-11-24 09:18 编辑

      本人新手,立志要进黑马学习,现在家看视频学习。
      对于数组,有几个问题有点困惑?
      动态初始化一个byte型数组,当定义这个数组的长度是多少时就会报编译错误内存溢出?加载进了内存,JVM在内存中开辟的空间大小是依据据这个数组的长度吗?
      Collections是java.util包下一个类,是用于操作Collection的工具类,类似的Arrays是用于操作数组的工具类,那为什么java中没有给数组定义一个类如Array?而用 数据类型[] 来表示数组?
       麻烦高手解答下?

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
FFF + 1 + 3 鼓励新同学~!加油加油!!!

查看全部评分

10 个回复

倒序浏览
谢谢版主鼓励!
回复 使用道具 举报
请问你,用了Array类,那你创数组的时候不是new Array(),那么 你还怎么确定你的数组是什么类型的?int ? String ?还是byte ?你能确定?
回复 使用道具 举报
泛型不是正好能解决这个问题吗?
回复 使用道具 举报
集合就是这样的,只是划分的很细。我觉得数组和集合有很多相似的地方
回复 使用道具 举报
java虚拟机启动时默认是开辟64M的内存空间,当定义这个数组长度大于1024*1024*64时会内存溢出,
回复 使用道具 举报
繁华终成泣 发表于 2013-11-23 16:46
java虚拟机启动时默认是开辟64M的内存空间,当定义这个数组长度大于1024*1024*64时会内存溢出, ...

我试过了,1024*1024*64是不会溢出。如果按照byte数据类型在内存中占1个字节来算,1024*1024*64肯定会溢出的,但实际又不会?为什么?那如果数组的元素是Object数据类型,那数组的长度又是多少范围内才不会内存溢出呢?
回复 使用道具 举报
我记得毕老师的视频中有说过java虚拟机默认占用的内存空间是64M,但是没有试过让内存溢出。当年毕老师在将异常的Error类时,做过这个实验,好像是整个了100M的byte数组,但是没有报错,又改了个600M的数组,就报错了。当时,毕老师也没有说明为什么,只是讲了讲Error出现的情况。不过,这个默认的空间大小是可以手动设置的。
数组如果存对象类型的数据的的话,就和集合一样,存入的是对象的内存地址,而不是对象实体。
数组干嘛非要定义一个Array类呢?现在定义数组的方式不是很简单吗?数据类型[] 变量名=new 数据类型[];不是很直观,很好吗?

点评

谢谢你的详细讲解  发表于 2013-11-23 20:50

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!都是自己的理解!

查看全部评分

回复 使用道具 举报
中关村阿旺 发表于 2013-11-23 20:40
我记得毕老师的视频中有说过java虚拟机默认占用的内存空间是64M,但是没有试过让内存溢出。当年毕老师在将异 ...

我是学到JavaScript中Array联想到Java中数组的,我想sun公司的开发者不定义一个数组类肯定有他的道理,后续再慢慢体会吧!谢谢了
回复 使用道具 举报
客气了,相互学习嘛。我的解答还不够彻底,还需要加油啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马