黑马程序员技术交流社区

标题: 关于数组的问题?有点困惑? [打印本页]

作者: 还不到时候    时间: 2013-11-23 14:31
标题: 关于数组的问题?有点困惑?
本帖最后由 还不到时候 于 2013-11-24 09:18 编辑

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

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

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

我是学到JavaScript中Array联想到Java中数组的,我想sun公司的开发者不定义一个数组类肯定有他的道理,后续再慢慢体会吧!谢谢了
作者: 中关村阿旺    时间: 2013-11-23 21:00
客气了,相互学习嘛。我的解答还不够彻底,还需要加油啊。




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