第4章-控制执行流程

Think in java 读书笔记

pikzas

2019.03.06

第4章-控制执行流程

知识点

while do-while和for

while循环中会先去查询判断条件,如果为false,则直接退出循环,一次也不执行。

do-while循环会先执行一遍循环体内的代码,然后查询判断条件,如果为false,才会退出循环。

for(initialization;boolean-expression;step)

  • initialization 只会执行一次
  • 然后依据boolean-expression判定 结果为true 进入循环,false 跳出循环
  • 执行statement
  • 执行step
  • 重复第二步

for循环中的逗号操作符 可以在初始化的时候,同时初始化多同类型的变量

class Demo{
   public static void test1() {
       System.out.println("--test1--");
       for (int i = 1 , j = i +5 ; (i < 5 && j < 8) ; i++ , j =i *2) {
           System.out.println("i = "+i+", j = "+j);
       } 
   }
}
//output
//i = 1, j = 6
//i = 2, j = 4
//i = 3, j = 6

foreach 只能运用在数组或者是实现了Iterable接口的对象上

break退出当前包括之后所有的循环;continue仅仅是跳过当前循环,之后该咋循环还是咋循环

while(true) for(;true;)是等价的。

标签 (lable:) 用于多层的循环嵌套中,类似于goto关键字

  1. 一般的continue是跳出所在循环的当次操作
  2. 带标签的continue是跳出这个标签后面紧接着的循环的当次操作
  3. 一般的break是结束所在循环的之后所有操作,以及当次操作break之后的代码都不会执行
  4. 带标签的break是结束标签后紧接着的那个循环的所有后续操作
class Demo{
    public static void main(String[] args){
        int i = 0;
        outer:
        for(;;){
            inner:
            for(;i<10;i++){
                System.out.println("i = "+i);
                if(i==2){
                    System.out.println("continue");
                    continue ;
                }
                if(i==3){
                    System.out.println("break");
                    i++;
                    break;
                }
                if(i==7){
                    System.out.println("continue outer");
                    i++;
                    continue outer;
                }
                if(i==8){
                    System.out.println("break outer"); 
                    break outer;;
                }
                
                for (int k = 0;k < 5;k++ ) {
                    if(k==3){
                        System.out.println("continue inner");
                        continue inner;
                    }
                }
            }
        }
      
    }
}

//output
//i = 0
//continue inner
//i = 1
//continue inner
//i = 2
//continue
//i = 3
//break
//i = 4
//continue inner
//i = 5
//continue inner
//i = 6
//continue inner
//i = 7
//continue outer
//i = 8
//break outer

switch(indicator) case:statement;break;

indicator 只能是byte char short int string 和枚举,不能是boolean long float double;
而且看下面的例子也是可以成功运行的
不加break 注意case 穿透。

class Demo{
    public static void main(String[] args){
        byte i = 0b10;
            switch (i){
                case 2:
                    System.out.println(1111);
                    break;
                case 0b11:
                    System.out.println(2222);
                    break;
                default: 
                    System.out.println("xxxxx");
        }
    }
}
class Demo{
    public static void main(String[] args){
        short i = 126;
        switch (i){
            case (char)23:
                System.out.println(1111);
                break;
            case 0b1111110:
                System.out.println(2222);
                break;
            default:
                System.out.println("xxxxx");
        }
    }
}
posted @ 2020-01-06 22:51  pikzas  阅读(199)  评论(0编辑  收藏  举报