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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江远云 中级黑马   /  2012-3-18 13:22  /  2589 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

元素类型[] 数组名=new 元素类型[]{元素,元素,……}没具体指明操作几个元素,此时他又如何在堆内存中判断应该要产生多大的内存空间呢,静态,难道是说它不是放在堆内存在?

5 个回复

倒序浏览
首先我想说的是静态不是放在堆内存中,而是放在方法区,
当你没指明数组具体长度时,系统会先给你分配一定空间,如果出现不够用情况它会再次给你分配直到够用为止。
回复 使用道具 举报
元素类型[] 数组名=new 元素类型[]{元素,元素,……};
这个只是格式,具体使用时写出来一般是这样:
String[] i = new String{"abc","def","ghi","jkm"}; 这样的,
而不是 String[] i = new String{"abc","def","ghi","jkm",.......};

静态初始化就是在声明时直接写明内部包含的元素,在句型里写“……”是为了表示可以写任意多个元素,也就是说,实际写出来的元素个数有有限的,占用多大的空间也就是确定的了。
回复 使用道具 举报
元素类型[] 数组名=new 元素类型[]{元素1,元素2,……}
你这是给数组创建对象的时候就初始化   数组中的元素列表里面有多少个元素 数组就有多大   比如你里面放了 元素类型[] 数组名=new 元素类型[]{元素1,元素2}
   那么这个数组的长度就是2   这就是确定值了     相当于是显示初始化了     
而  元素类型[] 数组名=new 元素类型[2] 是隐士初始化   如果是int类型的话  里面初始值是0,0      
     内存存数空间是   栈区   堆区   (方法,非静态,静态,常量池)区  静态肯定在最后这个区的静态区存储的
回复 使用道具 举报
        它修饰的成员都和类的加载有关,JVM运行时不会将所有的类加载到内存中,因为无法确定程序中要使用哪些。数组元素个数不确定时,系统会分配足够的空间让其使用,至到这个对象没有任何引用可以到达时,生命周期结束,成为垃圾,然后被系统回收。
回复 使用道具 举报
元素类型[] 数组名=new 元素类型[]{}//如果不指定具体元素也不指定长度编译会失败的 数组就是这个特性 他是要更加数组元素类型和元素个数来开辟空间的额 并没有静态的那个意思
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马