Java--day05--数组
数组(一)
1.数组概念
数组:在程序中存储同一种数据类型多个元素的固定容器.
数组的前提条件(特点):
1.数组一旦进行初始化其长度是固定不变的;
2. 数组中的元素在内存中必须是同一种数据类型;
3. 数组中的元素个数必须是多个;
2.数组的声明初始化
数组的声明:
数据类型[] 数组名;(推荐)
数据类型 数组名[];
数组的初始化:
动态初始化:初始化数组的时候只初始化数组的长度,不会初始化数组里面的具体数据值,JVM可以直接获取数组的长度
格式:
数据类型[] 数组名 = new 数据类型[数组长度];
静态初始化: 初始化数组的时候只初始化数组里面的具体数据值,不会初始化数组的长度,JVM可以间接获取数组的长度
标准格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,......,元素n};
简化格式:
数据类型[] 数据名 = {元素1,元素2,......,元素n};
数组声明初始化的名词解释:
数据类型: 数组中元素的数据类型
[ ]: 声明的是一维数组
数据类型[ ]: 数组的数据类型
数组名: 数组的名字
new: 向内存申请并开辟合适内存空间
数组长度: 数组中可以存储多少个元素
数组声明初始化的注意事项:
1.数组的动态初始化和静态初始化没有推荐一说,需要根据实际需求再进行决定使用哪种初始化的方式
2.在程序中不允许通过动静结合的方式进行数组的声明初始化
3.在数组中的元素支持变量的类型转换
4.数组静态初始化的简化格式不允许先声明,后初始化
//数组的声明1:数据类型[] 数组名;
int[] arr01;
//数组的声明2:数据类型 数组名[];
int arr02[];
//数组的初始化1:动态初始化
int[] arr03 = new int[3];
//数组的初始化2:静态初始化标准格式
int[] arr04 = new int[]{11,22,33};
//数组的初始化3:静态初始化简化格式
int[] arr05 = {11,22,33};
//通过数组的动静结合的方式进行初始化:错误
//int[] arr06 = new int[5]{11,22,33};错误
//在数组中可以支持元素的类型转换
int[] arr07 = {11,22,33,'a',(int)3.14};
//动态初始化:先声明后初始化
int[] arr08;
arr08 = new int[3];
//静态初始化:标准格式先声明后初始化
int[] arr09;
arr09 = new int[]{11,22,33};
//静态初始化:简化格式不允许先声明后初始化
int[] arr10;
3.数组的使用
获取数组中的元素
获取数组的长度
获取数组中的元素:
需要通过"索引值"进行获取
索引值: 针对数组中的元素按照一定的规则进行的数字编号
索引值的规则: 元素编号从0开始,一直到数组的长度-1,长度为0的数组不存在索引值
格式:
数组名[索引值]
获取数组的长度
数组名.length
(1).动态访问数组长度
所有的数组都提供了一个length 属性,通过这个属性可以动态访问到数组的长度,一旦获得了数组的长度,就可以通过循环来遍历该数组的每个数组元素。
代码如下:
//通过动态初始化创建数组
int[] arr = new int[3];
arr[0] = 11;
arr[1] = 22;
arr[2] = 33;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
(2).静态访问数组长度
//通过静态初始化的方式创建数组
int[] arr = {11,22,33};
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
数组中的三个异常:
1.NegativeArraySizeException异常:数组长度为负异常
产生原因:动态创建数组时长度为负数
2.ArrayIndexOutOfBoundsException: 数组索引越界异常
产生原因:访问错误或者不存在的索引
3.NullPointerException异常:空指针异常
产生原因:通过null获取数组元素或者对象成员
4.数组的使用
(1).按照固定格式进行数组的打印
int[] arr = {11,22,33,44};
for (int i = 0; i < arr.length ;i++ ) {
System.out.println(arr[i]);
}
System.out.println("===========================");
//数组:[11, 22, 33, 44]
System.out.print("数组:[");
for (int i = 0; i < arr.length ;i++ ) {
if (i == arr.length - 1) { //判断索引是否为最后的索引
System.out.println(arr[i] + "]");
} else {
System.out.print(arr[i] + ", ");
}
}
(2).数组的求和
// 定义一个数组
int[] arr = { 11, 22, 33, 44, 55 };
// 定义求和遍历
int sum = 0;
// 遍历数组
for (int i = 0; i < arr.length; i++) {
// 针对数组中每个元素累加求和
sum += arr[i];
}
System.out.println("sum:" + sum);
(3).数组获取最大值元素
- 最大值获取: 从数组的所有元素中找出最大值。
- 实现思路:
1.定义变量,保存数组0索引上的元素
2.遍历数组,获取出数组中的每个元素
3.将遍历到的元素和保存数组0索引上值的变量进行比较
4.如果数组元素的值大于了变量的值,变量记录住新的值
5.数组循环遍历结束,变量保存的就是数组中的最大值
int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
//定义变量,保存数组中0索引的元素
int max = arr[0];
//遍历数组,取出每个元素
for (int i = 0; i < arr.length; i++) {
//遍历到的元素和变量max比较
//如果数组元素大于max
if (arr[i] > max) {
//max记录住大值
max = arr[i];
}
}
System.out.println("数组最大值是:" + max);