日期:2014-05-19  浏览次数:20915 次

java 里面为什么数组都需要new一下?
c++ 里面 int diaoyudao[10]; 不就可以直接用数组了?

但是种咋在java里面 int diaoyudao[]; new diaoyudao[10]; 然后才可以用数组?

java里面数组都是放在 堆 里面而不是 栈 里面?

------解决方案--------------------
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++ 声明时可以指定大小,


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