一维数组:
什么是数组?
数组是属于引用数据类型
数组本质上就是让我们能 “批量” 创建相同类型的变量.它是一块连续的内存,它存放的是一组相同数据类型的集合。
例如:
如果需要表示两个数据, 那么直接创建两个变量即可 int a; int b
如果需要表示五个数据, 那么可以创建五个变量 int a1; int a2; int a3; int a4; int a5;
但是如果需要表示一万个数据, 那么就不能创建一万个变量了. 这时候就需要使用数组, 帮我们批量创建
基本语法:
定义数组的第一种方式:静态初始化(这种方式用的较多)
数据类型[] 数组名称 = { 数据1,数据2,....,数据n };
数据类型 数组名称[] = { 数据1,数据2,....,数据n }; (两种二选一都可以)
如:int[] array1 = {1, 2, 3};
注意事项:
int后的[]里面不能写东西,数据也不可以
静态初始化的时候, 数组元素个数和初始化数据的格式是一致的.
定义数组的第二种方式 :动态初始化
数据类型[] 数组名 = new 数据类型[]{数据1,数据2,....,数据n};
数据类型 数组名[] = new 数据类型[]{数据1,数据2,....,数据n};
如:int[] array2 = new int[]{1, 2, 3};
注意:注意,=后面的[]里不要写数组长度,写了会报错
定义数组的第三种方式:初始化数组长度
如:int[] array2 = new int[10];
注意:[10]表示初始化数组长度为10,默认元素为0
一维数组的使用:
// 比较最小值
int min=0;
int[] num1 = { 11, 56, 78, 95, 46, 88, 13 ,199};
for(int i=0;i<num1.length;i++){
if(num1[i]<min){
min=num1[i];
}
}
System.out.println(num1[min]);
//创建Scanner类对象
Scanner sc = new Scanner(System.in);
System.out.println("你想创建的数组里面要存储多少个数据:");
int length = sc.nextInt();
//声明数组并分配空间
int[] nums = new int[length];
for(int i =0;i<length;i++){
System.out.println("请输入数组中第"+(i+1)+"个元素:");
nums[i] = sc.nextInt();
}
System.out.println("数据输入完毕,现在输出来看看:");
for(int i =0;i<length;i++){
System.out.println(nums[i]);
}
注意:数组越界异常的情况
int[] num={12,23,33,};//12的下标为0,23为下标1,33下标为2
System.out.println(num[3]);//没有下标为3的元素值,所以会出现数组越界异常的情况
二维数组:
二维数组本质上就是由多个一维数组摞在一起组成的数组,二维数组中 的每个元素都是一维数组,而一维数组中的每个元素才是数据内容二维数组本质上就是由多个一维数组摞在一起组成的数组,二维数组中 的每个元素都是一维数组,而一维数组中的每个元素才是数据内容
语法:
数据类型[][] 数组名称 = new 数据类型[行数][列数];
数据类型[][] 数组名称 = {{元素1, 元素2,...元素n}, ...{元素n}};
数据类型 [][] 标识符(数组名)= new 数据类型[数组里元素个数][每个元素里面一维数组的长度]
例如:int[][] array1 = new int[3][2];
也可以理解为3行2列:
二维数组取值:
二维数组的取值呢,跟一维数组还是有差别的
比如下面这个例子,我们要获取这个二维数组中的 6
int[][] arr2 = {{1,2,3},{2,3},{6,3,9}};
取值:
int[][] arr2 = {{1,2,3},{2,3},{6,3,9}};//下标值:length-1
System.out.println(arr2[2][0]);//二维数组下标值为2,一维数组6的下标值为0
遍历:
//二维数组的普通遍历,按顺序排列
int[][] arr2 = {{1,2,3},{2,3},{6,3,9}};
for (int i = 0; i < arr2.length; i++) {//表示行
for (int j = 0; j < arr2[i].length; j++) {//表示列
System.out.print(arr2[i][j]+" ");
}
System.out.println();
}
//二维数组的增强遍历,按顺序排列
int[][] arr2 = {{1,2,3},{2,3},{6,3,9}};
for (int[] ints : arr2) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
二维数组例题:
// 已知有3个班级各5名学员,请使用二维数组计算各个班级的总成绩
double[][] scores=new double[3][5];//定义一个长度为三,元素长度为5的二维
//创建Scanner类对象
Scanner sc=new Scanner(System.in);
//通过循环向二维数组存数据
for (int i = 0; i < scores.length; i++) {
System.out.println("-----------第"+(i+1)+"个班------------");
for (int j = 0; j < scores[i].length; j++) {
System.out.println("输入第"+(j+1)+"个同学成绩");
// scores[i][j]=sc.nextDouble();
scores[i][j]=(int)(Math.random()*50+100);
}
}
//输出各班成绩,每班一行
for (int i = 0; i < scores.length; i++) {
System.out.print("第"+(i+1)+"个班同学成绩:");
for (int j = 0; j < scores[i].length; j++) {
System.out.print(scores[i][j]+" ");
}
System.out.println();
}
//各个班级总分
for (int i = 0; i < scores.length; i++) {
int sum=0;
for (int j = 0; j < scores[i].length; j++) {
sum+=scores[i][j];
}
System.out.println((i+1)+"班总成绩:"+sum);
}
多维数组(三维):
int[][][] scores=new int[3][2][2];
多维与一维和二维同理;多一维就加一个“[]”,三维遍历就需要在二维遍历for循环的情况下在嵌套一层for循环,几维就嵌套几个for循环