方法调用

  • 控制流就是在任何时刻将要进行的工作,计算机是知道自己下一步该做什么的机器
  • 可以使用调试器观察程序执行的过程,方法栈帧的调用和销毁构成了程序执行的基本顺序

    while与do while循环

  • 区别就是do while无论如何都会执行一遍执行体的语句,而while会先判断 ```java while(条件语句,返回boolean的语句 ) { // 执行体 }

do { // 执行体 } while (条件语句,返回boolean的语句)

  1. <a name="O1DZA"></a>
  2. # for循环
  3. - 比while循环更常用,有fori foreach两种
  4. - foreach只可用于实现了**迭代接口**的类生成的对象 implements Iterable<String>
  5. ```java
  6. for ( int i = 0; // 任何语句,一般为初始化语句,但甚至可以是空语句 ;
  7. i < 100; // 返回boolean的语句,但可以是空语句
  8. i ++ // 执行完循环体后执行的操作语句
  9. ) {
  10. // 循环体语句
  11. }
  12. for ( String element : Iterable<String>) {
  13. sout(elements)... // 循环体语句
  14. }

改变循环的流程 break/continue 关键字

break

  • 立刻结束包裹当前break的第一层循环,执行顺序直接到for循环之后

    continue

  • 立刻跳过包裹当前循环的剩余语句,继续下一次循环

    break label

  • java中,可以使用标识符加冒号声明一个label,label后面可以跟语句

    1. 最外层循环:
    2. for(){
    3. for(){
    4. break 最外层循环;
    5. }
    6. }
  • 可以使用break label跳出多层循环,类似goto语句,实现程序控制流程的转移

    switch语句

  • 可以switch哪些内容

    • int、long、char、byte、short
    • 枚举 enum
    • String (JDK7+)
  • switch case 会被穿透,经常需要配合break实现期望的控制流,但是如果希望继续执行后面的语句,可以利用此特性
  • 注意switch 内部变量作用域,仍根据包围的花括号原则

    1. int i = new Random().nextInt(5);
    2. switch(i){
    3. case 0:
    4. case 1:
    5. case 2:
    6. System.out.println(i);break;
    7. case 3:
    8. {
    9. String s = "zb";
    10. }
    11. break;
    12. case 4:
    13. {
    14. String s = "hx";
    15. }
    16. break;
    17. default:
    18. ...
    19. }

    其他

  • 所有控制流语句都可以互相嵌套