数组的概念
数组是一种引用数据类型,用来存储固定长度数据的容器,同时存储的数据的数据类型也要一致,数组中每个数据被称为元素,为了区分数组中的每个元素的数字被称为索引
注意:数组的长度一旦创建不能修改
定义数组的三种方式
1、动态初始化,指定数组的长度
数组类型 [] 数组名称 = new 数据类型 [数组长度];
例: int [] arr1 = new int [10];
2、静态初始化,指定数组的内容
数组类型 [] 数组名称 = new 数据类型 {元素1,元素2,元素3...};
例: String [] arr1 = new String["hello","word","!!"];
3、静态初始化,省略的写法
数组类型 [] 数组名称 = {元素1,元素2,元素3...};
例: String [] arr1 = {"hello","word","!!"};
索引和数组长度的概念
索引的概念:
每一个存储到数组的元素,都会生成一个唯一的数字编号,从0开始这个数字编号被称为索引(index),可以通过数组的索引找到对应的元素,对元素访问或修改
数组长度的概念:
每个数组的长度在创建时就已经固定了,数组的.length属性即可获得数组的长度,格式:数组名.length 返回结果为int类型,由此可以推断出数组的的最大索引值为: 数组名.length-1
数组元素取值和赋值
1、数组名[索引]=数值,为数组中的元素赋值
public static void main(String[] args) {
String [] arr1 = {"11","22","33","44"};
//为索引为3的元素赋值
arr1[3] = "000";
System.out.println(arr1[3]); //输出结果 000
}
2、变量=数组名[索引],获取出数组中的元素
public static void main(String[] args) {
String [] arr1 = {"我","爱","中","国"};
//获取索引值为3的元素值
String str = arr1[3];
System.out.println(str); //输出结果 国
}
遍历数组
1、for循环遍历
public static void main(String[] args) {
int [] arr = {1,2,3,4};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
2、for each循环
public static void main(String[] args) {
int [] arr = {1,2,3,4};
for (int i : arr) {
System.out.println(i);
}
}
输出结果
1
2
3
4
求数组中元素的最大值
public static void main(String[] args) {
int [] arr = {1,78,44,36,55};
int max = arr[0];//先将数组的第一个元素当做最大值
for (int i = 0; i < arr.length; i++) {
if(arr[i]>max){//如果当前元素大于max,将当前元素赋值给max
max = arr[i];
}
}
System.out.println(max);
}
输出结果
78
数组中常见的两种异常
1、数组越界异常
每个数组在创建时就已经确定了长度,即元素的个数,所以在访问数组时不能超过0~length-1这个范围,否则程序会抛出空指针异常
public static void main(String[] args) {
int [] arr = new int[3];
System.out.println(arr[3]);//数组的最大索引是2,此时访问索引为3的元素
}
输出结果
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
2、空指针异常
在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常
public static void main(String[] args) {
int [] arr = new int[3];
arr = null; //定义数组后将数组赋值为null
System.out.println(arr[1]);
}
输出结果
Exception in thread "main" java.lang.NullPointerException
二维数组
1、动态初始化
数据类型 [][] 数组名 = new 数据类型 [m][n]
数据类型 [] 数组名 [] = new 数据类型 [m][n]
例: int [][] arr = new int [3][2];
int [] arr2[] = new int [4][5];
以 int [][] arr = new int [3][2]; 为例,3表示一共有三个一维数组,2表示每个一维数组里面有两个元素,理论上可以有n维数组。
2、静态初始化
数据类型 [][] 数组名 = {{元素1,元素2....},{元素1,元素2....},{元素1,元素2....}.....};
例: int [][] arr = {{23,3345,257},{22,69},{35,66,47,83}};
静态初始化可用于不规则二维数组的初始化
3、二维数组的赋值
public static void main(String[] args) {
int [][] arr = new int [1][2];
arr[0][0] = 1;
arr[0][1] = 2;
System.out.println(Arrays.toString(arr[0]));//输出数组
}
输出结果
[1, 2]
4、二维数组的遍历
public static void main(String[] args) {
int [][] arr = {{23,3345,257},{22,69},{35,66,47,83}};
for (int i = 0; i < arr.length; i++) {//获取每个二维数组中的一维数组
for (int j = 0; j < arr[i].length; j++) {//获取每个一维数组中的元素
System.out.println(arr[i][j]);
}
}
}
输出结果
23
3345
257
22
69
35
66
47
83