java数组原理(对比c语言数组)
java数组原理(对比c语言数组)
数组名区别
本着一切皆对象的原则,所以java中的数组也是对象.那么数组类是哪个,当然不是java.util.Arrays.
总之:java数组名是对象,而c++数组名是数据结构
JAVA里数组的内存分配是在堆里面的,必须用new来分配,而C++里面是在栈里面分配的,定义的时候会自动分配。
C数组:数组空间是一次性给定的并且所有数组都是连续的。
在Java中,数组都是引用实体变量,呈树形结构,叶子结点间无关
java中的数组特点
1、数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。数组保存的仅仅是对象的引用,而不是对象本身。数组声明的两种形式:一、int[] arr; 二、int arr[]; 推荐使用前者,这是一个int数组对象,而不是一个int原始类型。
2、数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
4、在数组声明中包含数组长度永远是不合法的!如:int[5] arr; 。因为,声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
5、在数组构造的时候必须指定长度,因为JVM要知道需要在堆上分配多少空间。例:int[] arr = new int[5];
这个两者基本差不多。
在C中:数组[ ]中要给定一个常量,不能是变量。如果想不指定数组的确定大小就必须初始化,数组元素个数根据初始化内容来决定。
在Java中,一维数组和C中类似,二维数组可以不指定二维长度
int [][] array={
{1,2,3}
{4,5,6}
{7,8,9}
{10,11,12}
};
二维数组初始化与赋值以及遍历参考
https://blog.csdn.net/CSDN_Loveletter/article/details/127190118