1.break
break用于swich语句中,用于终止当前case语句
break用于循环语句中时,当执行到break语句就会终止循环
列如
for (int i = 0; i < 10; i++) {
System.out.println(i);
if (i == 3) {
System.out.println("找到了");
break;
}
}
其中,当i=3时会执行到break语句,此时循环就会结束
2.continue
continue用在循环中,其作用是跳过本轮循环,然后进入下一轮循环
例如
for (int i = 0; i < 10; i++) {
if (i == 3) {
continue;
}
System.out.println(i);
}
其中,当i=3时会执行到continu语句,然后就会跳出本轮循环,不在执行continu之后的语句,所以本轮循环不会打印i的值
3.BreakOutfor
break和continue在默认情况下都是操作本层循环
如果想让它们作用于其他层的循环,可以给其他循环起一个名字(任意取)来标记
例如
outFor: for (int i = 0; i < 5; i++) { //给外层循环起名outFor来标记
for (int j = 0; j < 5; j++) {
if (j == 2) {
break outFor;
// continue outFor;
}
System.out.print(j + " ");
}
System.out.println();
}
在内层循环操作外层循环,只需要用 break 名字; 或 continue 名字; 即可
4.方法
是什么?
方法是一堆代码的集合,代表一种固定的功能,是对这种功能的封装,在需要此功能时可以直接进行调用
优点:复用性强 方便维护 容易扩展 灵活度高 简洁
方法的声明
修饰符列表 返回值类型 方法名(参数列表)
其中,修饰符列表可以有也可以没有,也可以有多个且不区分顺序
权限控制:public private protected 缺省 四选一
static修饰静态 不加就是成员
返回值类型 可以写各种数据类型 如果没有返回值就写void
方法的类型
成员方法:没有被static修饰的方法
静态方法:被static修饰的方法
构造方法
public static void m1(){} //无参无返回值的静态方法
public static void m2(int x){} //有参无返回值的静态方法
public static void m3(int x,int y,double z){} //多参无返回值的静态方法
public static int m4(int x,int y,double z){} //多参有返回值的静态方法
public void (int x){} //有参无返回值的成员方法
方法的调用
如果是静态方法 类名.方法名(参数) 同类中类名可以省略
如果是成员方法 对象.方法名(参数)
关于参数
形参:在声明方法是传入的抽象的参数
实参:在调用方法时传入的不同的具体的参数
入参;是参数列表,就是在调用这个方法时要传入的数据
出参:执行完方法后得到的返回值
方法重载(Overload)
方法重载就是方法名相同,但是参数列表不同
参数列表不同可以是参数的个数不同,也可以是参数的数据类型不同
重载的优点:功能相同且方法名相同,方便记忆
比如
public static void sum(int a,int b){}
public static void sum(double a,double b){}
public static void sum(long a,long b){}
public static void sum(int a,double b,long c){}
public static void sum(char str,int a){}
//这些都是对同一个方法的重载
递归
理解递归思想之前____要先清楚VM栈
栈的特点:后进先出
栈帧:在栈内存中保存的数据空间
栈底元素:第一个入栈的元素
栈顶元素:最后一个入栈的元素
压栈:把栈帧放入栈中
弹栈:把栈帧从栈中拿出
在程序的执行过程中,每一个方法就是一个栈帧,越外层的方法就会越早入栈
main方法作为程序的入口,一般会最早入栈
递归
"要理解递归,就要理解递归"
递归就是方法在内部调用自己
直接递归:当前方法调用自己
间接递归:A调用B,B调用A
递归的方法需要终止条件,否则会陷入死循环
递归的优点:代码比较简洁,可以解决一些特殊的问题(如数据结构中的"树"就是递归定义的数据结构)
递归的缺点:较难理解,时间复杂度较高
递归的经典问题;斐波那契数列------1,1,2,3,5,8,13,21,34........
public static int fibo(int i){
if(i == 1 || i == 2) //如果要求第1位或者第2位,直接返回1
return 1;
else //否则,返回递归调用
return fibo(i-1) + fibo(i-2);
}
public static void main(String[] args){
int result = fibo(7); //求第7位数字
System.out.println(result);//打印结果为13
}