- 定义
- 数组变量名中存储的是数组在内存中的地址,数组是引用类型
- 初始化
- 静态初始化:定义时赋值
- 数据类型【】 数组名={元素1,元素2.。。。}
- 数据类型【】 数组名=new 数据类型【】{元素1,元素2.。。。}
- 数据类型 数组名【】={ };
- 动态初始化:只确定元素类型和数组长度,之后再存入具体数据
- 数据类型【】 数组名=new 数据类型【长度】;
- 有默认值
- 元素默认值
- 整型 :0
- 浮点型 :0.0
- bool :false
- 引用类型(类,接口,数组,string): null
- 字符数组的默认值为编号0
- 数组一旦定义,在程序执行过程中,长度、类型就固定了
- 两种格式写法独立,不可混用
- int 【】arrs=new int【3】{30,40,50};(×)
- 静态初始化:定义时赋值
- 访问数组长度
- 数组名.length
-
与c++区别
- JAVA里数组的内存分配是在堆里面的,必须用new来分配
- 数组名在堆区,存储所指向的堆区对象的首地址,不在数组中
- 传值时属于引用传值
-
C++里面数组(静态)是在栈里面分配的,定义的时候会自动分配。
- 数组名为数组的首地址,在数组中
- java
- 1.数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。
- 数组保存的仅仅是对象的引用,而不是对象本身
- int[] arr,一个int数组对象
- 2.Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
- 3.在数组声明中包含数组长度永远是不合法的,声明的时候并没有实例化任何对象
- 只有在实例化数组对象时,JVM才分配空间,这时才与长度有关
- 4.数组构造的时候必须指定长度
- 5.下标检查不是在编译时刻进行的,而是在运行时!
- 1.数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。
- C++中的数组就是内存块。如果一个程序要访问其自身内存块之外的数组,或者在数组初始化之前使用它,都会产生难以预料的后果。
- java的主要目标之一就是安全性。java确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销以及运行时的下标检查为代价的。
- java可以用类做数组成员
- JAVA里数组的内存分配是在堆里面的,必须用new来分配