第四章 控制执行流程

4.2 if-else

if(Boolean-expression)
    statement
else或者else if
    statement 

4.3 迭代

while(Boolean-expression)
    statement

4.3.1 do-while

do
    statement
while(Boolean-expression)

4.3.2 for

for(initialization; Boolean-expression; step)
    statement

4.3.3 逗号操作符

Java里唯一用到逗号操作符的地方就是for循环的控制表达式。通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型。

for(int i=1, j=i+10; i<5; i++, j=i*2){
    statement
}

注意:定义多个变量的这种能力只限于for循环,在其他任何选择或迭代语句中都不能使用这种方式。

4.4 Foreach语法

folat[] f = new folat[10];
for(folat x : f){
}

4.5 return

return关键字用途:

  1. 指定一个方法返回什么值
  2. 导致当前的方法退出。

返回void的方法中如果没有return语句,在该方法的结尾处会有一个隐式的return。

4.6 break和continue

break和continue都用于迭代语句的主体部分。

  • break:强行退出循环,不执行循环中剩余的语句。
  • continue:停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。

无限循环表达方式:

  • while(true)
  • for(;;)

4.7 臭名昭著的goto

标签:是后面跟着有冒号的标志符。在java中,标签当前仅当位于迭代语句之前。即如果在标签和迭代语句之间置入任何语句,标签将不起作用。而在java中需要使用标签的唯一理由就是因为有循环嵌套存在,而且想从多层嵌套中break或continue。这是由于break和continue关键词通常只中断当前循环,但若随同标签一起使用,它们就会中断循环,知道标签所在的地方。

lable1:
outer-iteration{
    inner-iteration{
        ...
        break; //(1)break中断内部迭代,回到外部迭代。
        ...
        continue; //(2)continue使执行点移回内部迭代的起始处。
        ...
        continue lable1;//(3)同时中断内部迭代以及外部迭代,直接转到lable1处;随后,它实际上是继续迭代过程,但却是从外部迭代开始。
        ...
        break lable1;//(4)会中断所有迭代,并回到lable1处,但不重新进入迭代。也就是说,它实际是完全终止了两个迭代。
    }
}

规则:

  1. 一般的continue会退回最内层循环的开头,并继续执行
  2. 带标签的continue会到达标签的位置,并重新进入紧接在哪个标签后面的循环
  3. 一般的break会中断并跳出当前循环
  4. 带标签的break会中断并跳出标签所指的循环

4.8 switch

switch(selector){
    case value1 : statement; break;
    case value2 : statement; break;
    ...
    default : statement; 
}

练习9 斐波那契数列

    public static void finbonacci(int x){
        int k;
        for(int i=1,j=1; j<=x; i=j,j=k){
            if(j x){
                break;
            }else{
                System.out.println(k);
            }
        }
    }
    public static void finbonacci2(int x){
        if(x < 2){
            System.out.println(x);
        }else{
            int i = 1;
            int j = 1;
            System.out.println(i);
            System.out.println(j);
            int k = 1;
            while (k x){
                    break;
                }else{
                    System.out.println(k);
                }
            }
        }
    }

练习10 吸血鬼数字

    public static void vampireNumber(){
        for(int i=10; i<100; i++){
            for(int j=i; j<100; j++){
                int k = i * j;
                if(k%100 != 0){
                    String strIJ = "" + i + j;
                    String strK = String.valueOf(k);
                    char[] charIJ = strIJ.toCharArray();
                    Arrays.sort(charIJ);
                    char[] charK = strK.toCharArray();
                    Arrays.sort(charK);
                    if (Arrays.equals(charIJ, charK)){
                        System.out.println(i+"X"+j+"="+k);
                    }
               }
            }
        }
    }

你可能感兴趣的:(第四章 控制执行流程)