1、数组概述
数组是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理
数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址
数组的长度一旦确定,就不能修改
我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快
2、数组的常见概念
数组名
下标(索引)
元素
数组的长度
3、一维数组
数组声明方法
type var[]、type[] var
Java语言中声明数组时不能指定其长度(数组中元素的数),例如:int a[5];
数组的初始化
动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行
int[] arr = new int[数组长度];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;
静态初始化:在定义数组的同时就为数组元素分配空间并赋值
int arr[] = new int[]{ 3, 9, 8};
int[] arr = {3,9,8};
数组元素引用
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素
数组元素的引用方式:数组名[数组元素下标]
数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1
每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度(元素个数)
数组一旦初始化,其长度是不可变的
数组元素默认初始化值
byte、short、int:0
long:0L
float:0.0f
double:0.0
char:0或\u0000
boolean:false
引用类型:null
4、二维数组
定义
对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组
使用
动态初始化
int[][] arr = new int[3][2]
int[][] arr = new int[3][]
静态初始化
int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}}
5、数组中常见算法
数组元素的赋值(杨辉三角、回形数等)
求数值型数组中元素的最大值、最小值、平均数、总和等
数组的复制、反转、查找(线性查找、二分法查找
数组元素的排序算法
6、Arrays工具类的使用
boolean equals(int[] a,int[] b)
判断两个数组是否相等
String toString(int[] a)
输出数组信息
void fill(int[] a,int val)
将指定值填充到数组之中
void sort(int[] a)
对数组进行排序
int binarySearch(int[] a,int key)
对排序后的数组进行二分法检索指定的值
7、数组使用中常见异常
数组脚标越界异(ArrayIndexOutOfBoundsException)
访问到了数组中的不存在的脚标时发生
空指针异常(NullPointerException)
数组引用没有指向实体,却在操作实体中的元素时