目录
一、介绍数组
一组相关变量的有序集合
数组存储的元素为相同的数据类型,可以是基本数据类型或引用数据类型
在java语言中,数组就是特殊的对象,属于引用数据类型
二、初始化的三种方式
数组使用之前需要先初始化,就是给数组分配内存空间,并给元素赋值
1、定义一维数组的三种方式
(1)动态初始化
通过给定数组长度来赋值
数据类型[] 数组名字 = new 数据类型[长度];
- 注意:数组有定长特性,长度一旦指定,不可更改。
(2)静态初始化
通过给定数组元素,来确定数组长度,初始化数组
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
注:这个时候就不用指定数组长度了,如果加上了长度,会报错
(3)静态初始化的简化方式--直接赋值法
数据类型[] 数组名 = {元素1,元素2,元素3...};
//必须在一个语句中完成,不能分开两个语句写
2、定义二维数组
元素为一维数组的数组就称为二维数组,列相当于一维数组的长度
定义二维数组的几种声明形式:
- 数组的动态初始化:数据类型 对象数组[][] = new 数据类型[行个数][列个数];
- 数组的动态初始化:数据类型 对象数组[][] = new 数据类型[行个数][];
- 数组的静态初始化:数据类型 对象数组[][] = new 数据类型[]{{值, 值,…}, {值, 值,…},…};
- 数组的静态初始化:数据类型 对象数组[][] = {{值, 值,…}, {值, 值,…},…};
三、数组元素的默认值
四、数组元素的访问
1、索引
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
- 索引范围:[0, 数组的长度-1]
2、访问格式
取值:数组名[索引]
赋值:数组名[索引]=值
3、数组长度
数组名.length,数组的最大索引是数组名.length-1
对于二维数组,数组名.length是行数,也就是一维数组的个数;数组名[下标].legnth才是某行的列数。
4、遍历数组
将数组中的每个元素分别获取出来,就是遍历
(1)普通for循环
void testFor() {
//int[] arr = {10,5,15,1,6,7};
int[] arr = new int[]{10,5,15,1,6,7};
System.out.println("数组长度是:"+arr.length);
for (int i = 0; i < arr.length; i++) {
System.out.println("数组第"+i+"个元素是:"+arr[i]);
}
}
(2)增强for循环
void testForeach() {
//int[] arr = {10,5,15,1,6,7};
int[] arr = new int[]{10,5,15,1,6,8,0};
System.out.println("testForeach数组长度是:"+arr.length);
for (int i : arr) {
//这个i指的是数组各个元素,跟简单for循环不一样
System.out.println("数组第"+i+"个元素是:"+i);
}
}
(3)Arrays工具类toString(数组名)
//import java.util.Arrays;//记得要import这个包
void testArrayToString() {
//int[] arr = {10,5,15,1,6,7};
int[] arr = new int[]{5,1,6,7};
System.out.println(Arrays.toString(arr));
}
(4)Arrays.deepToString(多维数组名)
Arrays.toString()方法打印的是二维数组中一维数组的地址
Arrays.deepToString()方法打印的是二维数组中一维数组中的值
void testDeepToString() {
int[][] arr = {{10,20},{2,4},{1,2},{5,1}};
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr));
}
输出结果:
[[I@659e0bfd, [I@2a139a55, [I@15db9742, [I@6d06d69c]
[[10, 20], [2, 4], [1, 2], [5, 1]]
五、数组长度不可变
数组的长度一旦确定就不能修改
如果定义了一个数组,重新赋值时,就会重新开辟新的存储空间