方法的重载
- 方法名相同
- 参数列表必须不同(个数、类型、参数排列顺序)
- 返回类型可同可不同
- 仅仅返回类型不同不足以成为方法的重载
命令行传参
先在命令窗口javac编译类java执行要在src目录下打上包名.类名 后面再加上参数
可变参数
public void test(int... numbers){//int... numbers 是一个数组, 可放多个参数
}
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,其他普通参数需在它之前声明。
递归
-
递归就是:A方法调用A方法
-
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头将陷入死循环
- 递归体:什么时候需要调用自身方法
-
public void test(int n){ if(n==1){ return 1; }else{ return n * test(n-1); } }
-
java是栈机制,n不能太大。、
数组
-
数组是相同类型数据的有序集合
-
数组描述的是相同类型的若干个数据,按一定顺序排列的数据组合而成
-
每一个数据称作一个数组元素,可以通过下标访问它们从0开始
-
四个基本特点
- 其长度是确定的。数组一旦被创建,他的大小就是不可以改变的
- 其元素必须是相同类型的,不允许出现混合类型
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属引用类型,数组可以看成是对象,数组中的每个元素相当于改对象的成员变量。数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中。
Java中new出来的都是保存在堆中
稀疏数组
-
当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
-
稀疏数组的处理方式是:
- 记录数组一共有几行几列,有多少个不同值
- 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
-
稀疏数组n行3列
- 第一行第一列记录原数组的列数
- 第一行第二列记录原数组的行数
- 第一行第三列记录原数组不同值的个数
- 第二行开始,第一列为不同值的所在的列数
- 第二行开始,第二列为不同值的所在的行数、
- 第二行开始,第三列为不同值的值
-
int[][] a = new int[11][11]; int[1][2] = 1; int[2][3] = 2; int sum = 0; for(int i = 0;i<a.length;i++){ for(int j = 0;j<a[i].length;j++){ if(a[i][j]!=0){ sum++; } } } int[][] a2 = new int[sum+1][3];//创建稀疏数组 a[0][0] = a.length; a[0][1] = a[0].length; a[0][2] = sum; //将非零的值存放在稀疏数组中 int count = 0; for(int i = 0;i<a.length;i++){ for(int j = 0;j<a[i].length;j++){ if(a[i][j]!=0){ count++; a2[count][0] = i; a2[count][1] = j; a2[count][2] = a[i][j]; } } } //还原稀疏数组 int[][] a3 = new int[a2[0][0]][a2[0][1]]; //给其中数组还原值 for(int i = 1;i<a2.lenght;i++){ a3[a2[i][0]][a2[i][1]] = a2[i][2]; }
学习地址
https://www.bilibili.com/video/BV12J41137hu?p=1