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

解决方案 »

  1.   

    对象永远不会存在于java栈中,数组是对象java栈,java堆  跟通常所说的栈、堆不是同一个东西,要分清楚。java栈和java堆可能都是在我们通常所说的堆上分配的
      

  2.   

    看看这个:
    http://topic.csdn.net/u/20090104/13/BBC39C24-ECCE-4B0C-AB56-155B59568A45.html
      

  3.   

    int[] array01 = {1,2,3}和
    int[] array02 = new int[]{1,2,3};
     
    array01 是一个引用变量 存放在栈内存里,它保存 {1,2,3}在堆内存中的地地址 
      

  4.   

    int[] array01 = {1,2,3} 这儿定义的是一个数组变量,给变量赋了初值,存放在heap里面;
    int[] array02 = new int[]{1,2,3};new 出来的对象存放在heap ,new出来的对象的引用存放在stack中,
    其实这儿就是考察 heap 和stack的存储:
    stack:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
    heap:存放所有new出来的对象;
      

  5.   

    int[] array01 = {1,2,3}这个只创建了一个对象,房子堆里!
    int[] array02 = new int[]{1,2,3};创建了俩个对象,new的对象放在堆里,1,2,3先被new在把值引用在
    new里(new的对象的引用)是放在栈里!