文章目录
一.数组的概念
数组可以理解成一个储存数据的容器。也可以理解成一个数据类型单一的,长度固定的,有序的数据结构。(数据在内存中储存,排列,组合的方式就是数据结构)
数据在电脑里面可以存在磁盘(永久储存)和内存(临时储存)之中。
二.数组的定义
在java中一维数组的定义的语法有两种方法:
1.类型 [ ] 数组名 = {......}; (静态定义)
举例:int [ ] arrs = { 1,2,3,4,5,6} ;
静态初始化:初始化时,就可以指定数组要存储的元素,系统还会自动计算出该数组的长度。
2.类型 [ ] 数组名 = new [ length ] ;
举例:String [ ] arrs = new String [4];
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
三.数组的基本使用
1.操作数组的元素
数组元素的访问:
1.数组内存地址的访问
格式:数组名
2.数组内部保存的数据的访问方式
格式:数组名[ 索引 ]
{
索引是什么?干嘛用的?
作用:访问数组容器中的空间位置
}
索引是数组容器中空间的编号:
特征①:索引从0开始
特征②:索引是连续的
特征③:索引是逐一增加,每次加一
例如静态定义一个数组:int [] arr = {11,22,33,44,55};
遍历通用格式:
for (int i =0;i<arr.length;i++){
System.out.println(arrs[i]);
}
2.数组在内存上的创建
3.数组常规操作
案例:获取最值,比如{190,230,33,290,789,765,498,210},求最大值和最小值
public class Test {
public static void main(String[] args) {
// 初始化一个一维数组
int a[] = {190,230,33,290,789,765,498,210};
// 定义一个变量表示最大值,默认数组的第一个元素就是最大值
int max=a[0];
// 定义一个变量表示最小值,默认数组的第一个元素就是最小值
int min = a[0];
// 遍历数组
for (int i=0;i<a.length;i++){
// 把数组里的每个元素分别和最大值,最小值做比较
if(a[i]>max){
max = a[i];
}else{
max=max;
}
if(a[i]<min){
min = a[i];
}else{
min = min;
}
}
System.out.println(max);
System.out.println(min);
}
}
例题:案例:键盘录入5个整数,存储到数组中,并对数组求和
public class Test {
public static void main(String[] args) {
// 控制台打印出提示信息
System.out.println("请输入5个数字");
//定义一个数组用来装控制台输入的数字
int a[] = new int[5];
// 定义一个变量用来表示最大值
int sum = 0;
// 循环控制台输入次数,并把输入的数字赋值到数组容器
Scanner s = new Scanner(System.in);
for (int i=0;i<a.length;i++){
a[i] = s.nextInt();
}
// 取出数组中每个元素,并对其求和
for (int j=0;j<a.length;j++){
sum +=a[j];
}
// 打印输出求和结果
System.out.println(sum);
}
}
二维数组
1.二维数组动态初始化
格式:数据类型 [ ][ ] 数组名 = new 数据类型[m][n];
m表示这个二位数组可以存放多少个一维数组
n表示每一个一维数组可以存放多少个元素
范例:int [ ] [ ] arr = new int [2][3];
该数组可以存放2个一维数组,每一个一维数组中可以存放3个int类型元素
2.二维数组静态初始化
格式:数据类型 [ ][ ] 数组名 = new 数据类型 [ ] [ ] { {元素1,元素2},{元素1,元素2 } };
范例: int [ ] [ ] arr = new int [ ] [ ] { {11,22},{33,44} };
3.二维数组遍历
案例:已知一个二维数组arr={{11,22,33},{33,44,55}};遍历该数组,取出所有元素并打印
思路:①遍历二维数组,取出里面每一个一维数组
②在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
for(int i =0;i<arr.length;i++){
//arr[i]就是每一个一维数组
for(int j =0;j<arr[i].length;j++){
//打印二维数组
System.out.println(arr[i][j]);
}
}
例题
public class Test {
public static void main(String[] args) {
// 定义一个二维数组并初始化值
int a[][] = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
// 定义一个求和的变量
int sum = 0;
// 遍历二维数组并求和
for (int i=0;i<a.length;i++){
for (int j=0;j<a[i].length;j++){
sum+=a[i][j];
}
}
// 输出求和结果
System.out.println(sum);
}
}
注意
数组操作中的常见小问题:
①索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题
②空指针异常:访问你的数组已经不再指向堆内存的数据。造成空指针异常
③null:空值,引用数据类型的默认值,表示不指向任何有效对象