日期:2014-05-20  浏览次数:20719 次

java数组小问题有点疑惑了,求大侠出面。
int[] array01 = {1,2,3}和
int[] array02 = new int[]{1,2,3};
前者是存储在栈里面,后者是存储在堆里?
还是说我问的有点业余?
前者是后者的缩写?
为了兼容个人习惯的不同?
求大侠出面,小弟初学,有点疑惑!!!


------解决方案--------------------
对象永远不会存在于java栈中,数组是对象

java栈,java堆 跟通常所说的栈、堆不是同一个东西,要分清楚。

java栈和java堆可能都是在我们通常所说的堆上分配的
------解决方案--------------------
看看这个:
http://topic.csdn.net/u/20090104/13/BBC39C24-ECCE-4B0C-AB56-155B59568A45.html
------解决方案--------------------
都是存在堆里的 。第二种写法好像不那么常见
------解决方案--------------------
int[] array01 = {1,2,3} 这儿定义的是一个数组变量,给变量赋了初值,存放在heap里面;
int[] array02 = new int[]{1,2,3};new 出来的对象存放在heap ,new出来的对象的引用存放在stack中,
其实这儿就是考察 heap 和stack的存储:
stack:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
heap:存放所有new出来的对象;
------解决方案--------------------
根据C/C++里面的,第一个是声明一个数组并初始化,第二个是开辟一个空间给一个初始化了的数组!