c++ 里面 int diaoyudao[10]; 不就可以直接用数组了?但是种咋在java里面 int diaoyudao[];  new diaoyudao[10]; 然后才可以用数组?java里面数组都是放在 堆 里面而不是 栈 里面?

解决方案 »

  1.   

    java ,数组所引用的值,是在堆里的,
    java 数组是引用对象,引用对象都需要开辟内存空间,
    new 关键字在java里是实例化对象,也是为对象开辟内存空间
    其实也不一定要new, int[] arr = {}; 这样也是可以的
    如果大括号里不赋值,就是个空数组,大括号里赋几个值,这个数组就是多大
    c / c++ 也是这样用
    int arr1[] = {1,2,3,4,5,6}; 
    int arr2[50] = {-23,34,56,100,234,-9,0,45,10002};
    只是,c/c++ 声明时可以指定大小,
      

  2.   

    JAVA 里面的数组名是一个引用变量,引用变量是放在是放在一个栈里面,而JAVA数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。所以如果不new一下,就无法得到这个数组,即引用变量没有引用的对象。而在C++中,数组名实际上是数组的首地址,是一个指针,数组在声明之后就已经生成了这个数组对象。就不用new了