7、控制流程

7.1 块作用域

块:指由一对花括号括起来的若干简单的Java语句。

块确定了变量的作用域。

块分为:静态的和非静态的

执行的顺序为:

一个块可以嵌套在另一个块中。但是不能在嵌套的两个块中声明同名的变量。在

示例:

步骤1:在Demo010项目中的com.zjk.type包内创建Block类

源码:

package com.zjk.type;

/**

*

*@类名 Block

*@日期 2015125日下午1:42:11

*@作者 zjkorder

*@版本 v1.0

*@描述    

* 块:的讲解

* main 方法所在类

*/

public class Block {

      

    

    String name = "block!";//声明一个全局变量

      

    

    /**

     * 默认的构造方法

     * @Title: Block

     * @Description: TODO(这里用一句话描述这个方法的作用)

     * @param 设定文件

     * @return

     * @throws

     *

     */

    public Block() {

        // TODO Auto-generated constructor stub

        System.out.println("构造方法内的语句!");

    }

    

    /**

     * 第一个块

     */

    {

        String s = "我是第一个块的第一条输出语句!";//声明一个字符串变量s

        System.out.println(s);

        System.out.println(name);

        /**

         * 第一个块作用域的内的一个块

         */

        {

//            String s;// 错误:Duplicate local variable s 原因:在嵌套的两个或多个作用域内声明类同名的变量

            String ss ="我是第一块内嵌套的块";

            System.out.println(ss);

            

        }

        

    }

    

    /**

     * 第二个块

     */

    {

        System.out.println("第二块内的输出语句!");

    }

    

    /**

     * 第一个静态块

     */

    static{

        System.out.println("第一个静态块的输出语句!");

        

    }

      

    

    public static void main(String[] args) {

        new Block();

    }

 

}

 

 

 

7.2条件语句

条件语句的格式为:if(condition){block statement}

当condition为真是执行block statement

执行顺序:

 

if(condition){block statement 1}else{block statement 2}

当condition 为真时执行block statement 1 ,为假时执行 block statement 2

执行顺序:

if(condition 1){block statement 1}else if(condition 2){block statement 2}

当condition 1 为真时执行block statement 1 ,condition 1为假且condition 2 为真时执行 block statement 2

执行顺序:

 

示例:

步骤1:在Demo010项目中的com.zjk.type包内创建ConditionalStatement类

源码:

package com.zjk.type;

/**

*

*@类名 ConditionalStatement

*@日期 2015125日下午2:54:53

*@作者 zjkorder

*@版本 v1.0

*@描述    

*

* 条件控制语句

* if

* main方法所在类

*/

public class ConditionalStatement {

    

    /**

     * main方法

     * @Title: main

     * @Description: TODO(这里用一句话描述这个方法的作用)

     * @param @param args 设定文件

     * @return void

     * @throws

     *

     */

    public static void main(String[] args) {

        

        int a = 10; //声明int型变量a 并赋值 10

        

        int b = 9; //声明int型变量b 并赋值 9

        

        int c = 11; //声明int型变量c 并赋值 11

        

        int max = a; // 声明int型变量来保存最大值

          

        

        if(a>b){// if(condition){ block statement} 结构的控制语句

            System.out.println("a大于b");

        }

        

        System.out.print("ac的大小比较结果为:");

        if(a > c){ //if(condition ){ block statment 1}else{ block statement 2} 结构的控制语句

            System.out.println("大于");

        }else{

            System.out.println("小于");

        }

          

        

        if(max < b){//if(condition 1){ block statment 1}else if(condition 2){ block statement 2} 结构的控制语句

            max = b;

        }else if(max < c){

            max = c;

        }

        System.out.print("abc三个数的最大值是:"+max);

        

    }

 

}

 

7.3 循环语句

 

7.3.1 while与do-while循环

While循环常用的格式为: while(condition){block statement}

当condition为真是循环执行block statement,当condition为假时跳出循环。

执行顺序为:

do-while循环常用的格式为:do{block statement}while(condition)

先执行block statement ,当condition为真时循环执行block statement语句,为假时跳出循环

执行顺序为:

 

while与do-while的区别:

while循环是先判断条件是否成立再执行循环语句

do-while循环是先执行一次循环语句再判断条件是否成立

示例:

步骤1:在Demo010项目中的com.zjk.type包内创建WhileCyale类

源码:

package com.zjk.type;

/**

*

*@类名 WhileCyale

*@日期 2015125日下午3:21:35

*@作者 zjkorder

*@版本 v1.0

*@描述    

*

* while与都while循环

*

* main方法所在类

*/

public class WhileCyale {

 

    /**

     * main方法

     * @Title: main

     * @Description: TODO(这里用一句话描述这个方法的作用)

     * @param @param args 设定文件

     * @return void

     * @throws

     *

     */

    public static void main(String[] args) {

        int a = 1;//声明一个int型变量保存遍数

        

        while(a < 10){

            System.out.println("这是一个while循环:");

            a++;

        }

          

        

        do{

            System.out.println("这是一个do-while循环:");

            a--;

        }while(a>1);

    }

      

      

    

}

 

 

7.3.2 for与for-each循环

for( statement 1 ; condition; statement 2 ){ block statement}

statement1 与statement2 是两条语句,在执行for循环时statement1第一的执行,在判断condition是否成立,然后是block statement ,statement每次循环最后执行

执行顺序为:

for-each循环:更加简洁的用于数组和容器。

 

示例:

步骤1:在Demo010项目中的com.zjk.type包内创建ForCyale类

源码:

package com.zjk.type;

/**

*

*@类名 ForCyale

*@日期 2015125日下午3:42:59

*@作者 zjkorder

*@版本 v1.0

*@描述    

* forfor-each循环

* main方法所在类

*/

public class ForCyale {

 

    /**

     * main 方法

     * @Title: main

     * @Description: TODO(这里用一句话描述这个方法的作用)

     * @param @param args 设定文件

     * @return void

     * @throws

     *

     */

    public static void main(String[] args) {

        

        // 利用for循环输出1~10之间的整数

        for (int i = 1; i <= 10; i++) {

            System.out.println(i);

        }

        

        int[] a = {1,2,3,4,5};// 创建一个int型数组变量保存1~5之间的整数

        System.out.println("数组a的内容为:");

        //利用for-each循环输出a数组

        for (int i : a) {

            System.out.println(i);

        }

          

        

        

    }

}

 

 

7.4 switch语句

 

switch的结构为:

switch(choice){

case variable1:

block statement;

break;

case variable2:

block statement;

break;

case variable3:

block statement;

break;

.

.

.

default:

block statement default;

break;

}

 

Switch 语句将从与选项值相匹配的case标签处开始执行直达遇到break语句,或者执行到switch语句结束处为止。如果没有相匹配的case标签,而有default字句,就执行default字句。

执行顺序为:

 

示例:

步骤1:在Demo010项目中的com.zjk.type包内创建ForCyale类

源码:

package com.zjk.type;

/**

*

*@类名 MultipleChoice

*@日期 2015125日下午3:49:06

*@作者 zjkorder

*@版本 v1.0

*@描述    

*

* 多重选择switch

* main 方法所在类

*

*/

public class MultipleChoice {

      

    

    /**

     * main 方法

     * @Title: main

     * @Description: TODO(这里用一句话描述这个方法的作用)

     * @param @param args 设定文件

     * @return void

     * @throws

     *

     */

    public static void main(String[] args) {

          

        

        int a = 6;

        

        switch (a) {

        case 1: //a1

            System.out.println("这次你选择的是1");

            break;//跳出多重选择

//        case 1: //错误:Duplicate case 原因:多重选择中已经存在相同的案例

        case 2:

            System.out.println("这次你选择的是2");

            break;

        case 3:

            System.out.println("这次你选择的是3");

            break;

        case 4://从与选项值相同的case值开始执行直至遇到break语句才会,或者执行到switch语句的结束处

            System.out.println("这次你选择的是4");

        case 5:

            System.out.println("这次你选择的是5");

            break;

        case 6: //从与选项值相同的case值开始执行直至遇到break语句才会,或者执行到switch语句的结束处

            System.out.println("这次你选择的是6");

        default://如果没有匹配的case标签,而有default字句,就执行这个字句

            System.out.println("不存在你的选项!");

        }

        

        

    }

 

}

 

 

 

7.5 break和continue

 

break: 直接跳出循环。适用:循环语句和switch语句。

continue:跳出当前循环。适用:循环语句。

示例:

步骤1:在Demo010项目中的com.zjk.type包内创建ForCyale类

源码:

package com.zjk.type;

/**

*

*@类名 InterruptControl

*@日期 2015125日下午4:14:13

*@作者 zjkorder

*@版本 v1.0

*@描述    

* 中断流程控制 break continue

* main方法所在类

*/

public class InterruptControl {

 

    

    /**

     * main 方法

     * @Title: main

     * @Description: TODO(这里用一句话描述这个方法的作用)

     * @param @param args 设定文件

     * @return void

     * @throws

     *

     */

    public static void main(String[] args) {

        

        System.out.println("1~10之间的奇数为:");

        for (int i = 1; i < 10; i++) { // 利用for循环输出 1~10 之间的奇数

            if(i%2 == 0){

                continue;//只是跳出当前循环

            }

            System.out.println(i);

        }

        

        System.out.println("1~10之间的偶数为:");

        int n = 0;

        while(n>=0){ // 利用while循环输出1~10 之间的偶数

            n++;

            if(n%2 != 0){

                continue;//跳出当前循环

            }

            System.out.println(n);

            if(n >= 10){

                break;// 跳出循环

            }

            

        }

        

    }

}

 

 

 

原文地址:https://www.cnblogs.com/zjkorder/p/5021893.html