Day03_17_数组
数组
-
什么是数组?
- 数组是多个相同类型数据按照一定顺序排列的有序集合,并使用一个名字命名,通过编号的方式,对这些数据进行统一的管理。
- 数组也是对象,数组中的元素相当于数组对象的成员变量
- 数组的长度是固定的,不可变得。
- 如发生数组越界,则会报错:ArrayIndexOutofBounds
-
数组的特点和规则?
- 数组是引用类型
- 数组是有序排列的,数组中可以存储任何类型的元素,但每个数组元素需类型统一
- 数组是一种简单的数据结构,是线性结构
- 数组拿首元素的地址作为数组对象的地址
- 数组本身是引用数据类型,而数组中的元素可以是任意类型,包括基本数据类型和引用数据类型
- 创建数组对象会在内存中开辟一整块连续的空间,而数组名引用的是这块连续空间的首地址
- 数组的长度就是数组中元素的个数,数组的长度一旦确定,就不能再修改了
- 我们可以通过指定下标或者索引的方式调用指定位置上的元素
-
数组的类型分为:
*按维度:一维数组,二维数组,三维数组....
*按元素的数据类型:基本数据类型数组 和 引用数据类型数组 (对象数组)
*. 一维数组的使用
* 一维数组的声明和初始化
- 第一种方式:静态初始化:数组的初始化和数组中元素的赋值操作同时进行。
int id[]; //定义声明一个数组名叫id的int类型数组
id = new int[] {1,2,3,4,5,6,6}; // 将id数组赋值
- 第二种方式:动态初始化 : 数组的初始化和数组中元素的赋值操作分开进行
String[] Name=new String[5]; //定义声明了一个String类型的数组,数组名为name,数组长度为5
- 对象数组
Object o1=new Object();
Object o2=new Object();
Object o3=new Object();
Object[] objs= {o1,o2,o3};
* 什么时候使用动态初始化,什么时候使用静态初始化?
- 无论是静态初始化还是动态初始化 最后的内存分布都是一样的
- 如果在创建数组的时候知道应该存储什么数据,就是用静态初始化
- 如果在创建数组的时候不知道数组中应存储的数据是什么,先创建空间就使用动态初始化
* 如何调用数组指定位置的元素
- 通过调用数组中元素的角标进行调用
- 数组的角标或索引是从0开始的,到数组的长度(length)减1结束。
* 如何去获取数组的长度
- 数组的长度属性为: length,可以用 数组名.length 查询数组名
* 如何遍历数组
for(int i=0;i<=Name.length-1;i++) {
System.out.println(Name[i]);
}
* 数组元素的默认初始化值
数据类型 初始化值
---------------------------------------
byte 0
short 0
int 0
long 0
float 0.0
double 0.0
boolean false
char \u0000
String null
引用类型 null
* 数组在内存中如何分配空间(数组的内存解析)
— 数组的首地址存放在栈中, 数组的实体存在堆中。