一维数组
语法:
数组元素类型[]
数组名; 如:int[] ages;
另一种方式:int ages[]; (不推荐)
- 可以把int[]看成是一种数据类型——int类型的数组类型。
- int[] 数组可以看出,该数组中的元素类型是int类型的。
- String[] 数组可以看出,该数组中的元素是String类型的。
数组的初始化:
数组在定义后,必须初始化才能使用。所谓初始化,就是在堆内存中给数组分配存储空间,并为每一个元素赋上初始值。
初始化有两种方式:
静态初始化(除了用new关键字来产生数组以外,还可以直接在定义数组的同时 就为数组元素分配空间并赋值。)
动态初始化(数组定义与为数组元素分配空间并赋值的操作分开进行)
数组元素的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经 分配空间,其中的每个元素也被按照实例变量同样的方式被隐式 初始化。
数组的界限
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素
数组元素的引用方式:arrayName[index]
每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度 (元素个数)
起点和终点
一维数组优点:按照索引查询效率高
缺点
- 添加删除元素效率低;
- 按照内容查询效率低(无序)
冒泡排序:基本的排序算法,理解排序规则,实现并完善排序代码
数组类型做形参
二维数组
int [][] a = {{1,2},{3,4,0,9},{5,6,7}};
Java中多维数组不必须是规则矩阵形式
二维数组可以看成以数组为元素的数组。
例如: int [][] a= {{1,2},{3,4,5,6},{7,8,9}};
Java中多维数组的声明和初始化应按从高维到低维的顺序进行,
列如:
int [][] a= new int[3][];
a[0] = new int[2]; ***
a[1] = new int[4];
a[2] = new int[3];
int t1[][] = new int[][4]; //非法
二维数组的初始化
Declare, create and initiate in the same time :
int intA[][] = {{1,2},{2,3},{3,4,5}};
int intB[3][2] = {{1,2},{2,3},{4,5}};//非法
Ø Declare, create and initiate separately :
int a[][] = new int[3][5];
int b[][] = new int[3][] ;
b[0] = new int[2];
b[1] = new int[3];
b[2] = new int[5];
二维数组的实质:每个元素是一维数组的一维数组
数组常见异常
- NullPointerException
空指针异常(空引用异常)操作了一个尚未初始化或者没有分配内存空间的数组 - ArrayIndexOutOfBoundsException
数组的索引越界异常,操作的数组的索引不在[0,数组名.length-1]范围内