初级05 - Java的控制流

没太多要说的,和 JavaScript 或其他语言差不多。

  • while 与 do...while 循环
while (expression) {
     statement(s)
}

do {
     statement(s)
} while (expression);
  • for 循环
for (int i = 0; // 任何语句,包括空语句
     i < 100; // 返回boolean的语句,包括空语句
     i++) { // 任何语句,包括空语句
   System.out.println(i);
}
  • for each 循环
    注意要看循环的目标是否实现了 Iterator 接口。
for (String s: Iterable) {
   ....
}
  • 改变循环的流程:break/continue
    • break; ⽴即结束包裹当前break的第⼀层循环
    • continue; 跳过包裹当前continue的第⼀层循环
    中的其余语句,继续下⼀次循环
    • break label; 直接跳到 label 处,类似于 C 语言中的 goto。

  • 控制流:switch
    可以switch哪些东⻄?
    • int/long/char/byte/short
    • enum 枚举
    • String (JDK7+)
    • switch的穿透
    • switch中的作⽤域

switch(expression){    
case value1:    
 //code to be executed;    
 break;  //optional  
case value2:    
 //code to be executed;    
 break;  //optional  
......    
    
default:     
 // code to be executed if all cases are not matched;    
}   

控制流:嵌套
上面提到的都能嵌套。

例子:

  1. 求1到n之间有多少个质数(素数)
public class Main {
    public static void main(String[] args) {
        System.out.println(howManyPrimeNumbers(5));
    }

    /**
     * 给定一个数字n,返回1到n之间的质数(素数)个数,不包括n本身。
     *
     * 

例如,n=5,返回2,因为1到5之间有2个质数:2和3。 * *

提示:对于正整数n,如果用2到Math.sqrt(n)+1之间的所有整数去除,均无法整除,则n为质数。 * * @param n 给定的数字 * @return 1到n之间(不包括n)质数的个数 */ public static int howManyPrimeNumbers(int n) { int count = 0; label: for (int i = 2; i < n; i++) { // 已知 1 不是素数,所以从 2 开始 for (int j = 2; j < (Math.sqrt(i) + 1); j++) { if (i % j == 0 && i != j) { // 提前出现非自己的整除说明不是素数 continue label; // 只是 break 的话,count 还是会 +1,所以要直接跳到外层循环 } } count++; } return count; } }

你可能感兴趣的:(初级05 - Java的控制流)