第四章 流程控制

在一个程序运行的过程中,各个语句的执行顺序对程序的执行结果是有直接影响的。所以我们必须清楚每条语句的执行流程。而且,很多时候我们需要控制语句执行的顺序来实现我们要完成的功能。

4.1 分类

  • 顺序结构
  • 分支结构(if,switch)
  • 循环结构(for,while,do…while)

4.2 顺序结构

public static void main(String[] args) {
        //顺序执行,根据编写的顺序,从上到下执行
        byte b = 100;
        System.out.println(b);
        short s = 1000;
        System.out.println(s);
        int i = 123456;
        System.out.println(i);
    }

4.3 分支结构(if语句)

if语句有三种结构

第一种格式:if
    if(关系表达式){
        执行语句体;
    }
    //其他语句

执行流程:
1.首先计算关系表达式的值;
2.如果值为true就执行语句体;
3.如果值为false就不执行语句体;
4.继续执行后面的其他语句。

    public static void main(String[] args) {
        //定义两个变量
        int a=10;
        int b=5;
        //变量使用if判断
        if(a<b){
            //关系表达式的值为false,所以这个语句体不会被执行
            System.out.println("a<b");
        }
        //继续执行下面的语句
        b=10;
        if(a==b){
            //关系表达式值为true,所以这个语句体会被执行
            System.out.println("a==b");
        }
        //继续执行下面的其他语句
        System.out.println("over");
    }
第二种格式:if…else
	if(关系表达式){
        语句体1;
    }else{
        语句体2;
    }
    //其他语句

执行流程:
1.首先计算关系表达式的值;
2.如果值为true就执行语句体1中的内容;
3.如果值为false就执行语句体2中的内容;
4.继续执行其他语句。

    public static void main(String[] args) {
        //定义两个变量
        int a=10;
        int b=5;
        if(a==b){
            //关系表达式的值为false,所以这个语句体不会被执行
            System.out.println("a等于b");
        }else{
            //该语句体会被执行
            System.out.println("a不等于b");
        }
        //继续执行下面的其他语句
        System.out.println("over");
    }
第三种格式:if…else if…else
    if(关系表达式1){
        语句体1;
    }else if(关系表达式2){
        语句体2;
    }
    ...
    }else if(关系表达式n){
        语句体n;
    }else{
        语句体n+1;
    }
    //其他语句

执行流程:
1.首先计算关系表达式1,判断其结果是true还是false;
2.如果true就执行语句体1;
3.如果为false就计算关系表达式2,判断结果;
4.如果为true就执行语句体2;
5.如果是false就继续计算关系表达式…,判断结果
6…
7.如果没有关系表示式为true,则执行else里面的语句体n+1。

public static void main(String[] args) {
        //定义一个变量
        int week = 6;
        if(week==1){
            System.out.println("今天是星期一");
        }else if(week==2){
            System.out.println("今天是星期二");
        }else if(week==3){
            System.out.println("今天是星期三");
        }else if(week==4){
            System.out.println("今天是星期四");
        }else if(week==5){
            System.out.println("今天是星期五");
        }else if(week==6){
            System.out.println("今天是星期六");
        }else if(week==7){
            System.out.println("今天是星期日");
        }else{
            System.out.println("数字有误!");
        }
        //继续执行下面的其他语句
        System.out.println("over");
    }

4.4 循环结构

概述:循环语句可以在满足循环条件的情况下,反复执行一段代码,这段被重复执行的代码称为循环体语句,当反复执行这个循环体的时候,需要在合适的时候将循环判断条件改为false,从而结束循环,否则循环将一直执行下去,从而形成死循环。

for循环语句

格式:

for(初始化表达式1;布尔表达式2;步进表达式3){
        循环体4;
    }

格式解释:

  • 初始化表达式:用于表示循环开启时的起始状态。
  • 布尔表达式:用于表示循环反复执行的条件。
  • 步进表达式:用于改变循环的状态。
  • 循环体:用于表示反复执行的内容。

执行流程:

  • 1234->234->234->…知道2不满足为止。
public static void main(String[] args) {
        //控制台输出10次HelloWorld,不使用循环
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("--------------------");
        //用循环结构改进,循环10次
        //定义变量i从0开始,循环条件为i<10
        for (int i = 0; i < 10; i++) {
            System.out.println("HelloWorld"+i);
        }
    }

小练习:计算1-100之间的偶数和,并把结果在控制台输出。

public static void main(String[] args) {
        //定义一个变量sum,用于存储结果。
        int sum = 0;
        for(int i=1;i<=100;i++){
            //判断i是不是偶数,用一个if条件语句
            if(i%2 == 0){
                sum+=i;
            }
        }
        //循环执行完毕,打印结果
        System.out.println("1-100之间的偶数和为"+sum);
    }

4.5 死循环

  • 死循环:就是循环中的条件永远为true,死循环就是永不结束的循环,例如while(true){}。在我们开发中,会出现使用死循环的场景,比如,我们需要读取用户的输入,但是用户将要输入多少数据我们并不清楚,这时候就需要用到死循环,当用户输入数据完毕了,那么就可以结束循环了,这时候结束循环就需要用到跳出语句了。
    死循环(无限循环)的格式

  • for( ; ; ){}

  • while(true){}

  • do{} while(true);

4.6 嵌套循环

  • 嵌套循环:就是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,总共的循环次数=外循环次数*内循环次数。
  • 实例:使用嵌套循环,打印2018-2021年的月份,格式为xxxx年x月
public static void main(String[] args) {
       //使用嵌套循环,年份是外循环,月份是内循环
       for(int i=2018;i<=2021;i++){
           for(int j=1;j<=12;j++){
               System.out.print(i+"年"+j+"月 ");
           }
           //每打印完一年就换行
           System.out.println();
       }
   }

打印结果:
年月

4.7 Debug调试

  • Debug调试:是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
  • 使用IDEA的断点调试功能,查看程序运行过程。
    debug
    A表示正在运行的方法以及断点所在的行数;
    1表示代码向下执行一行,快捷键F8;
    2表示进入被调用的方法,快捷键F7;
    3表示运行完所有程序,快捷键F9;
    4表示停止Debug调试模式,快捷键Ctrl+F2;
    5表示切换到控制台查看运行结果;
    6变量值显示区域。
  • Debug操作流程
    (1)如何加断点?
    选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可。
    7
    (2)如何运行加了断点的程序?
    在代码区域右键选择Debug执行,或者点击运行按钮旁边的小虫子。
    (3)看哪里?
    看Debugger窗口和Console窗口
    (4)点哪里?
    点Step Into这个箭头,也可以直接F7
    (5)如何删除断点
    直接在断点上再次鼠标左键点击一下即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值