一个方法在执行过程中调用自身,就称为“递归”。
e.g
public static int fac(int n){ if(n == 1){ return 1; } int tmp = n * fac(n - 1); return tmp; } public static void main(String[] args){ System.out.println(fac(3)); }
递归的代码横向思考,纵向执行。
二、数组 2.1 数组的概念:一组连续的空间,存放的是一组相同数据类型的数据。
2.2 创建数组: 2.2.1 动态初始化:数据类型[] 数组名称 = new 数据类型[]({...})
e.g
int[] array = new int[5];
int[] array = new int[]{1,2,3,4,5};
2.2.2 静态初始化:数据类型[] 数组名称 = {初始化数据};
e.g int[] array = {1,2,3,4,5};
2.3 数组的使用: 2.3.1 获取数组长度:int[] array = {1,2,3,4,5}; System .out.println(array.length);2.3.2 访问数组中的元素:
int[] array = {1,2,3,4,5}; System .out.println(array[1]);2.3.3 修改元素:
int[] array = {1,2,3,4,5}; array[0] = 45;2.3.4 增强for循环:
for(int val:array){ System.out.print(val + " "); }2.3.5 返回指定数组的内容的字符串表示形式:
int[] array = {1,2,3,4,5}; String ret = Arrays.toString(array);
结果为:[1,2,3,4,5]
2.3.6 填充:1、用n填充数组:
Arrays.fill(数组名,n);
2、某数组中的下标i到j用n填充:
2.4 数组作为方法的参数:Arrays.fill(数组名,i,j,n); (j下标对应的元素不填充)
e.g
public static void func(int[] array){ array = new int[5]; } public static void mian(String[] args){ int[] array = {1,2,3,4,5,6}; func(array); System.out.println(Arrays.toString(array)); }
引用就是一个变量,也可以理解成一个指针。
在参数传递的过程中,传的确实是引用,但是并没有通过引用修改原来的对象内容,只是修改了当前这个引用的指向。
2.5 数组拷贝: 2.5.1copy[i] = array[i];2.5.2 *** 作数组的工具类Arrays
int[] ret1 = Arrays.copyOf(数组名,长度);//需拷贝的数组名,新的数组的长度 int[] ret2 = Arrays.copyOf(数组名,from,to);//局部拷贝 [from,to)2.5.3
System.arraycopy(需拷贝的数组,从原数组哪里开始拷,目标数组,拷贝到目标数组的哪个下标,拷贝长度);2.5.4 克隆:产生array指向的对象的副本
int[] array = {1,2,3,4}; int[] ret = array.clone();三、二维数组
二维数组是特殊的一维数组
3.1 基本语法数据类型[] [] 数组名称 = new 数据类型[行数][列数]{初始化数据};
e.g
int[][] array = {{1,2,3},{4,5,6}}; int[][] array = new int[1][3]; int[][] array = new int[][]{{1,2,3},{4,5,6}};3.2 不规则的二维数组:
二维数组可以不写列数,但一定要写行数。
e.g
int[][] array = new int[2][]; array[0] = new int[3]; //第1行有3列 array[1] = new int[5]; //第2行有5列
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)