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

posted @ 2023-10-17 00:31  hacker-dreamer  阅读(67)  评论(0编辑  收藏  举报