1.递归
程序调用自身的编程技巧称为递归
它通常把一个大型的复杂问题转化为一个与原问题相似的规模较小的问题来求解,大大减少了程序的代码量
public class Test34{
public static void main(String[] args){
int i = dg(100);
System.out.println(i);
System.out.println((1+100)*100/2); //高斯算法
}
static int dg(int i){
int sum = 0;
if(i==1){
return 1;
} else {
sum = i + dg(i-1);
}
return sum;
}
}
2.数组
动态初始化:
数组类型 数组名[] = new 数据类型[数组长度];
静态初始化:
数组类型 数组名[] = new 数据类型[]{值1,值2...};
注意,如果我们创建了一个数组并初始化,并没有给数组赋值,那么数组是有默认值的;
默认值如下
整型 0 浮点型 0.0 char 空字符
布尔型 false 引用类型 null
注意:数组的长度是在初始化的时候确定的,数组的长度不可改变
foreach循环语句
int arr[] = new int[]{1,2,3};
for(int j : arr){
System.out.println(j);
}
面试题:动态初始化和静态初始化有什么区别?
答:动态初始化是初始化语句和赋值语句分开写;
静态初始化是初始化语句和赋值语句一起写
3.冒泡排序
将较小的数向上冒,较大的数向下沉;
相邻两个元素进行比较,如果有需要,就进行交换每完成一次循环就像最小的数排在最前面
下一次循环进行类似操作
原始数组 118,101,105,127,112
一: 101 118,105,112,127
二: 101 105 118 112 127
三: 101 105 112 118 127
四: 101 105 112 118 127
4.二维数组
格式:
数组类型[][] 数组名 = new 数组类型[长度][长度];
注意:二维数组中每个元素对应的一维数组可以长度不一样,我们可以分别初始化其中的各个一维数组。
在遍历二维数组地方过程中,通常使用嵌套循环,传统循环,foreach都可以作为外层或内层循环
class Test39{
public static void main(String[] args){
int[][] arr = new int[3][];
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
arr[0][0]=11;
arr[0][1]=12;
arr[0][2]=21;
arr[1][0]=22;
arr[2][0]=31;
arr[2][1]=32;
for(int i =0; i < arr.length;i++){
for(int j = 0; j < arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
面向对象举例
使用 对象名.成员变量 来为成员变量赋值
使用 对象名.方法 来使用该方法
注意:两个类的关联关系体现在一个类的方法形参是另一个类的对象