数组,是有多个同种类型的数据按照一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对其进行管理。
数组中常见的概念:数组名,元素,下标,数组的长度。
数组本身是引用数据类型,但是数组中的元素可以是基本数据类型,也可以是引用数据类型。创建数组时会在内存中开辟一块连续的空间,而数组名中引用的是这一块连续地址的首地址。
数组的长度一旦确定就不能够更改,我们可以直接通过下标的方式来进行数组中的元素调用。数组根据维度分为一维数组和二维数组。
一维数组:声明 int [] arr; int arr[];声明数组的时候,不能指定其长度。
一维数组的声明并初始化的三种格式:
//方式1 静态初始化
int arr[] = {1,2,3};
//方式2 静态初始化 在定义数组的同时,就为数组分配空间并赋值同时进行
int arr[] = new int[]{1,2,3}
//方式3 动态初始化 数组声明,且为数组分配空间和赋值操作是分开的。
int arr[] = new int[3];
int [0] = 1;
int [1] = 2;
int [2] = 3;
定义并用运算符new为其分配空间之后,才可以引用数据中的每个元素。数组的引用方式,数组名+下标,这里注意数组的下标是从0开始的,如果我们定义了一个数组名为array的数组,长度为10,那我们引用该数组中的元素的时候就只能用array[0-9]中的来引用某一个元素即可,这里我们如果想要获取数组的长度只需要利用到array.length即可;
数组时引用数据类型,那么数组中个的每一个元素就相当于是类中的成员变量,所以对于数组中的元素而言,如果在分配空间的时候没有对其进行初始化,那么默认也会有初始化值。基本数据类型而言,默认初始化值各不相同。引用数据类型而言,默认初始化值都是null;具体的如下图:
我们知道一维数组中的元素可以存放基本数据类型或者是引用数据类型,那么我们现在思考一个问题,如果数组作为一个引用数据类型再存放到我们的数组中去,那么可以吗?
这种情况是可以的,这样的数组,我们称之为二维数组。其实我们可以把二维数组看成是一个行列式的结构。n行m列;
//二维数组的声明:
//静态初始化
int [][] arr = new int[][]{{1,2,3},{5,4,3}};
int [][] arr ={{1,2,3},{5,4,3}};
//动态初始化
int [][] arr = new int[3][2];
arr[0][0]=1;
arr[0][1]=2;
arr[1][0]=3;
arr[1][1]=4;
arr[2][0]=5;
arr[2][1]=6;
int [][] arr = new int[3][];