一、了解数组(一维数组)
1、概述:
数组(array)是一种用于存储多个相同类型数据的存储模型
2、数组的定义格式
有两种定义格式
格式1:
数据类型[] 变量名
例如: int[] arr
格式2:
数据类型 变量名[]
例如: int arr[]
3、数组的初始化(动态初始化)
初始化 : 为数组中的元素分配存储空间,并为每个数组元素赋值
初始化方式:
`动态初始化`:
手动指定数组的长度,系统分配数组的默认值(int默认值0,String为null)
初始化时只会指定数组的长度,而数组的值由系统为数组分配初始值
格式:数据类型[] 变量名=new 数据类型[数组长度];
例如: int[] arr=new int[10];
`静态初始化`:
手动指定数组的元素,系统分配数组的默认长度
格式:
数据类型[] 变量名=new int[]{元素1,元素2...元素n};
简化格式:
数据类型[] 变量名={元素1,元素2...元素n};
注意:
简化格式写法不可分割成两行,否则会报错。
4、数组内存分配
Java程序在运行时,需要在内存中分配空间,为了提高效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据的方式和内存关系方式
栈内存
特点
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存
特点
1:存储new出来的内容(实体和内存)。
2:每一个实体都有内存地址值。 实体中的变量都有默认初始化值
3:实体不再被使用时,会在不确定的时间内被垃圾回收器回收
5、数组的访问
1.访问数组
通过数组名称来访问
格式:数组名称
2.访问数组中的元素
通过索引来访问
格式:数组名称[索引/下标/index]
6、索引:数组中元素的标识(行号)
概述:是数组中元素排序的方式
作用:用于访问数组中的数据
特点:
1. 索引从0开始
2.索引是连续的
3.索引是逐一增加,每次加1
7、数组遍历的通用格式
for(int i=0;i<=数组.length-1;i++){
System.out.println(数组[i]);
}
8、数组操作常见问题
(1)数组索引越界
int[] arr = new int[10];
System.out.println(arr[10]);
//访问到了数组中的不存在的索引时报错。
(2)空指针
int[] arr = null;
System.out.println(arr[0]);
//arr引用了没有指向堆内存的数据。
9、求数组中最大值最小值
例如:
int[] arr={1,3,5,6,4,7,9,10,99,56,100,45};其中最大值为100,最小值为1
思考:
1. 首先定义变量用于存储最大值或最小值
2. 初始值为数组中索引为0的元素
3. 与数组中剩余数据逐一比较,每次比较的最大值保存 在变量中
4. 输出结果
int[] arr={1,3,5,6,4,7,9,10,99,56,100,45};
int max=arr[0];//最大值
int min=arr[7];//最小值
for (int i = 1; i <arr.length ; i++) {
if(max <arr[i]){
max=arr[i];
}
}
for (int i = 0; i <arr.length ; i++) {
if(min >arr[i]){
min=arr[i];
}
}
System.out.println(max);
System.out.println(min);
}
二、了解二维数组
1、二维数组的定义格式
两种格式
格式1:
数据类型[][] 变量名
例如: int[][] arr
格式2:
数据类型 变量名[][]
例如: int arr[][]
2、二维数组的初始化(动态初始化)
动态初始化:
初始化时只指定数组的长度,由系统为数组分配初始值
格式: 数据类型[][] 变量名 = new 数据类型[数组长度][数组长度];
例如: int[][] arr=new int[5][5];
静态初始化:
初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型[][] 变量名=new 数据类型[][]{{数据1...},{数据2...}...};
例如: int[][] arr=new int[][]{{1,2},{3,4},{5,6,7}};
可以简化为:数据类型[][] 变量名={{数据1...},{数据2...}...};
注意:简化写法中使用的是大括号
例如: int[][] arr={{1,2},{3,4},{5,6,7}};
3、二维数组元素访问
1.访问数组
通过数组名称来访问
格式:数组名称2.访问一维数组中的元素
通过索引来访问
格式:数组名称[索引]3.访问二维数组中的元素
通过索引来访问
格式:数组名称[索引][索引]