概念
将一维数组(普通的数组)作为元素存储的数组,称为二维数组
要求
数据类型相同
名词
元素:二维数组中的一个一维数组称为一个元素
长度:二维数组中的一维数组的个数
下标:
下标1,对应一维数组在二维数组中的位置 下标2,值在一维数组中的位置
使用步骤
声明
语法;
数据类型[][] 数组名;
创建
动态
不带值创建 数组名 = new 数据类型[二维数组中可以存放一维数组的个数][一维数组中可以存放元素的个数];
二维数组中可以存放一维数组的个数:必须限制 一维数组中可以存放元素的个数:可以不限制(不写)
带值创建 数组名 = new 数据类型[][]{ {}, {}, {}, ... }; 注意:动态创建时,可以将声明与创建分开
静态
数据类型[][] 数组名 = { {值1,值2,...}, {值3,值4,值5,...}, {值6,...}, ... }; 注意:必须声明与创建同时执行
使用
查询
查询二维数组中的一维数组 二维数组名[下标]
查询二维数组中的一维数组某个位置的值
方式1 步骤: 1,先查询元素在的一维数组 2,通过一维数组查询值
方式2 数组名[元素所在的一维数组在二维数组中的位置][元素在一维数组的位置];
查询二维数组长度 数组名.length
查询二维数组中一维数组的长度 数组名[一维数组在二维数组中的下标].length;
修改
修改二维数组中的一维数组
二维数组[下标] = 一维数组;
修改二维数组中的一维数组某个位置的值
二维数组[下标1][下标2] = 值;
二维数组的遍历
思路: 1,循环获取二维中的一维数组 2,遍历一维数组
for (int i = 0; i < shuzu3.length; i++) {
// for (int j = 0; j < shuzu3[i].length; j++) {
// System.out.print(shuzu3[i][j]);
//
// }
// System.out.println();
//
// }
算法
作用
1,为了大厂校招 2,扩宽思维 3,提高程序的性能
具体是
在代码中使用数学公式,提高代码执行效率
常用的算法
两数交换 int a = 10; int b = 1; int c = a; a = b; b = c;
寻找最值: 寻找最大值 要求:在一个数组里面寻找最大最值
思路: 1,有个数组
2,假设一个数为最大值
3,遍历数组
4,使用获取的数组中的值与假设的最大值比较
5,如果获取的数组中的值大于假设的最大值,那么将取出的值赋值给假设的最大值
6,当循环结束后,假设的最大值就是真的最大值
int max=shuzu3[1][0];
for (int i = 0; i < shuzu3[1].length; i++) {
if (max<shuzu3[1][i]) {
max=shuzu3[1][i];
}
}
System.out.println(max);
}
将寻找的最值放到数组的最前面
思路: 冒泡 选择
代码注解
public class lianxi {
public static void main(String[] args) {
// 三种声明赋值方式
int[][] shuzu1;
shuzu1 = new int[2][];
shuzu1 = new int[2][2];
int[][] shuzu2 = new int[][] { { 1, 5, 3, 7 }, { 2, 8, 9, 6 } };
int[][] shuzu3 = { { 3, 4, 5, 6 }, { 2, 5, 6, 7 } };
// //查找
// int[] shuzu4=shuzu2[1];
// for (int s:shuzu4) {
// System.out.print(s);
// }
// int d=shuzu2[1][1];
// System.out.println(d);
// 修改
// shuzu2[1]=new int[]{0,9};
// for (int s:shuzu2[1]) {
// System.out.println(s);
// }
// shuzu2[1][1]=90;
// System.out.println(shuzu2[1][1]);
// 数组长度查询
// System.out.println(shuzu2.length);
// System.out.println(shuzu2[1].length);
// 二维数组的遍历
// for (int i = 0; i < shuzu3.length; i++) {
// for (int j = 0; j < shuzu3[i].length; j++) {
// System.out.print(shuzu3[i][j]);
//
// }
// System.out.println();
//
// }
// int max=shuzu3[1][0];
// for (int i = 0; i < shuzu3[1].length; i++) {
// if (max<shuzu3[1][i]) {
// max=shuzu3[1][i];
// }
// }
// System.out.println(max);
// 将寻找的最值放到数组的最前面思路:冒泡
// for (int i = 0; i < shuzu3[1].length-1; i++) {
// for (int j = 0; j < shuzu3[1].length-1; j++) {
// if (shuzu3[1][j]<shuzu3[1][j+1]) {
// int s=shuzu3[1][j];
// shuzu3[1][j]=shuzu3[1][j+1];
// shuzu3[1][j+1]=s;
//
// }
//
//
// }
//
// }
// for (int e:shuzu3[1]) {
// System.out.println(e);
//
// }
// 将寻找的最值放到数组的最前面思路:选择
for (int i = 0; i < shuzu3[1].length - 1; i++) {
int minIndex = i;
for (int j = i; j < shuzu3[1].length; j++) {
if (shuzu3[1][minIndex] < shuzu3[1][j]) {
minIndex = j;
}
}
if (i != minIndex) {
int s = shuzu3[1][i];
shuzu3[1][i] = shuzu3[1][minIndex];
shuzu3[1][minIndex] = s;
}
}
for (int g : shuzu3[1]) {
System.out.print(g);
}
}
}
排序
概念:将数组中的数据从大到小或从小到大依次排列
冒泡排序
选择排序
jdk提供的排序: Arrays.sort(数组); Arrays.toString(数组):将数组转换为特定格式的字符