黑马程序员技术交流社区

标题: 静态初始化方式? [打印本页]

作者: 江远云    时间: 2012-3-18 13:22
标题: 静态初始化方式?
元素类型[] 数组名=new 元素类型[]{元素,元素,……}没具体指明操作几个元素,此时他又如何在堆内存中判断应该要产生多大的内存空间呢,静态,难道是说它不是放在堆内存在?
作者: 刘元明    时间: 2012-3-18 13:51
首先我想说的是静态不是放在堆内存中,而是放在方法区,
当你没指明数组具体长度时,系统会先给你分配一定空间,如果出现不够用情况它会再次给你分配直到够用为止。
作者: 丁佼    时间: 2012-3-18 14:53
元素类型[] 数组名=new 元素类型[]{元素,元素,……};
这个只是格式,具体使用时写出来一般是这样:
String[] i = new String{"abc","def","ghi","jkm"}; 这样的,
而不是 String[] i = new String{"abc","def","ghi","jkm",.......};

静态初始化就是在声明时直接写明内部包含的元素,在句型里写“……”是为了表示可以写任意多个元素,也就是说,实际写出来的元素个数有有限的,占用多大的空间也就是确定的了。
作者: 贠(yun)靖    时间: 2012-3-18 23:23
元素类型[] 数组名=new 元素类型[]{元素1,元素2,……}
你这是给数组创建对象的时候就初始化   数组中的元素列表里面有多少个元素 数组就有多大   比如你里面放了 元素类型[] 数组名=new 元素类型[]{元素1,元素2}
   那么这个数组的长度就是2   这就是确定值了     相当于是显示初始化了     
而  元素类型[] 数组名=new 元素类型[2] 是隐士初始化   如果是int类型的话  里面初始值是0,0      
     内存存数空间是   栈区   堆区   (方法,非静态,静态,常量池)区  静态肯定在最后这个区的静态区存储的

作者: 盛祖华    时间: 2012-3-19 00:59
        它修饰的成员都和类的加载有关,JVM运行时不会将所有的类加载到内存中,因为无法确定程序中要使用哪些。数组元素个数不确定时,系统会分配足够的空间让其使用,至到这个对象没有任何引用可以到达时,生命周期结束,成为垃圾,然后被系统回收。
作者: 泮和顺    时间: 2012-3-19 15:51
元素类型[] 数组名=new 元素类型[]{}//如果不指定具体元素也不指定长度编译会失败的 数组就是这个特性 他是要更加数组元素类型和元素个数来开辟空间的额 并没有静态的那个意思




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