9初级 - Java的控制流

127 阅读1分钟

方法的控制流

  • 每当开启一个新的方法都会启动一个新的环境叫做stack frame
  • 栈是严格的上下方法
  • 方法栈
  • 脑补程序允许的逻辑

站在全局的角度看java发生了什么

while与do-while循环

while (返回boolean的语句) {
  ....
}

do {
  ...
} {
  返回boolean的语句
}
  • 示例,do i始终会执行一遍
public class Main {
    public static void main(String[] args) {
        int i = 0;
        while (i < 10) {
            System.out.println(i);
            i += 1;
        }
        do {
            System.out.println(i);
        } while (i > 0);
    }
}

step over 和step into的区别

  • step over执行当前行语句,无论当前行语句多么复杂
  • step into 会以最详细的方式进行当前行的语句

两种for循环

  • for...i
  • for each,这种需要实现iterable接口 18px

break与continue

  • continue
package com.github.hcsp.controlflow;

import java.util.Arrays;
import java.util.List;

public class Main {
    // 只打印list的奇数
    public static void printOdd(List<Integer> list) {
        for (int i = 0;
         i < list.size();
         i++) {
            if(list.get(i)%2 == 0) {
                continue;
            }
            System.out.println(list.get(i));
        }
    }

    public static void main(String[] args) {
        printOdd(Arrays.asList(1,4,2,56,-1,3,12));
    }
}

break label

  • break label 的用法,直接跳出到最外层的循环
package com.github.hcsp.controlflow;


public class Main {
    public static void main(String[] args) {
        最外层的循环:
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                break 最外层的循环;
            }
        }
    }
}

switch语句

  • 可以switch哪些东西
    • int/long/char/byte/short
    • enum 枚举
    • String (JDK7+)
  • switch case
package com.github.hcsp.controlflow;


import java.util.Random;

public class Main {
    public static void main(String[] args) {
        int i = new Random().nextInt(5);
        switch(i) {
            case 0:
                System.out.println(i);
                break;
            case 1:
                System.out.println(i);
                break;
            case 2:
                System.out.println(i);
                break;
            case 3:
                System.out.println(i);
                break;
            default:
                System.out.println(i);
                break;
        }
    }
}