1.数组类型
数组是编程语言中常见的一种数据结构,可用于存储多个数据,每个数组元素存放一个数据,可以通过数组元素的索引来访问数组元素。数组也是一种数据类型,java的数组要求所有的数组元素具有相同的数据类型,即一个数组只能存储一种数据类型的数据,而不能存储多种数据类型的数据。
一旦数组初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。即使把某个元素的数据清空,但它所占的空间依然被保留,依然属于该数组,数组的长度不变。Java的数组既可以存储基本类型的数据,也可以存储引用类型的数据,只要所有的数组元素具有相同的类型即可。
2.定义数组
语法格式:
A:数据类型[] 数组名 如:int[] arr(推荐);
B:数据类型 数组名[] 如:int arr[];
数组是一种引用类型的变量,使用它定义一个变量时,仅仅表示定义了一个引用变量,这个引用变量还未指向任何有效的内存,因此定义数组时不能指定数组的长度。
3.数组初始化
Java中数组必须先初始化,然后才能使用。所谓的初始化,即为数组的元素分配内存空间,并为每个元素赋初始值。
数组初始化的两种方式:
静态初始化:初始化时指定每个元素的初始值,由系统决定数组长度;
动态初始化: 初始化时只指定数组长度,由系统为数组分配初始值。
3.1 静态初始化
格式:数据类型[] 数组名=new 数据类型[]{元素1,元素2,…}
简化格式:数据类型[] 数组名={元素1,元素2,…}(只有在定义数组的同时执行数组初始化才支持使用简化的静态初始化)
//使用静态初始化,初始化数组时只指定数组元素的初始值,不指定数组元素的长度
Int[] arr=newint[]{0,1,2,3,4};
//简化写法
Int[] arr={0,1,2,3,4};
3.2 动态初始化
格式:数据类型[] 数组名=new 数据类型[数组长度];
//动态初始化只指定数组的长度,由系统为每个元素指定初始值
Int[] arr=newint[5];
数据类型 | 默认初始化值 |
byte、short、int、long | 0 |
float、double | 0.0 |
char | 一个空字符(空格),即’\u0000’ |
boolean | false |
引用数据类型 | null,表示变量不引用任何对象 |
注意:不能同时使用静态初始化和动态初始化。
4. 数组的遍历
在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。
5. 数组常见异常
数组索引越界异常(arrayIndexOutOfBoundsException):
每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错。
空指针异常(NullPointerException):
在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常。
6. 二维数组
二维数组实质就是一个元素为一维数组的数组。
6.1动态初始化方式一(指定有多少个长度相同的一维数组):
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
int[][] arr = new int[3][4];
6.2动态初始化方式二(指定二维数组中有多少个一维数组,每一个一维数组的长度不固定):
数据类型[][] 变量名 = new 数据类型[m][];
注:m这个数据必须给出,后面的数据可以不给
6.3二维数组的静态初始化:
静态初始化:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};