1.二维数组的介绍
(1)二维数组的格式:
a:数据类型[][] 变量名 = new 数据类型[m][n];
b:数据类型 数组名[][] = new 数据类型[m][n];
c:数据类型[] 数组名[] = new 数据类型[m][n];
(2)二维数组的内存图解
例:
public class Test {
public static void main(String[] args) {
int[][] arr = new int[3][2];
System.out.println(arr);//二维数组的地址
System.out.println(arr[0]);//二维数组第一个一维数组的地址
System.out.println(arr[0][0]);//二维数组第一个元素的值
}
}
运行结果为:
内存图为:
(3)输出10行杨辉三角
public class Test {
public static void main(String[] args) {
int[][] arr = new int[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
arr[i][j] = 1;
} else {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}
输出结果为:
2.递归的介绍
(1)递归概述: 方法定义中调用方法本身的现象
(2)斐波那契数列的实现
A:使用for循环实现
public class Test {
public static void main(String[] args) {
int[] arr = new int[10];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println("用for循环实现斐波那契数列:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}
输出结果为:
B:用递归实现
public class Test {
public static void main(String[] args) {
System.out.println("用递归实现斐波那契数列:");
for (int i = 0; i < 10; i++) {
System.out.print(recursive(i) + "\t");
}
}
public static int recursive(int i) {
if (i < 2) {
return 1;
} else {
return recursive(i - 1) + recursive(i - 2);
}
}
}
输出结果为:
3.面向对象思想概述
当需求单一,或者简单时,一步一步去操作(即面向过程开发)没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤就很麻烦了。这时开始思索,能不能把这些步骤和功能在进行封装,根据不同的功能,进行不同的封装,功能类似的封装在一起。这样结构就清晰了很多。用的时候找到对应的类就可以了。这就是面向对象的思想。