java数组所引用的值在堆中,C是除了malloc的在堆中,而正常使用是在栈中的。
java数组是引用对象,引用对象都需要开辟内存空间,这一点与C相同。
new这个关键字在java中是实例化对象,也为对象开辟了内存空间。
java中,int[] arr = {};这是个空数组,有几个就开辟几个空间,而C声明时可以指定大小,写在[]中
总结一下:java中的对象是在堆中的,所以如果不new一下,是得不到这块空间的。
而在C中,数组名实际上是数组的首地址,是一个指针,也就是说,数组在声明后就已经生成了这个数组对象了(已经开辟了空间),所以就不用new了。