写点什么

Java 中流程控制语句

作者:共饮一杯无
  • 2022-10-12
    浙江
  • 本文字数:3499 字

    阅读完需:约 11 分钟

Java中流程控制语句

概述

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

判断语句

if

格式:


if (关系表达式){语句体;}


执行流程:


  • 首先判断关系表达式看其结果是 true 还是 false

  • 如果是 true 就执行语句体

  • 如果是 false 就不执行语句体

if...else

格式:


if(关系表达式) {语句体 1;}else {语句体 2;}


执行流程:


  • 首先判断关系表达式看其结果是 true 还是 false

  • 如果是 true 就执行语句体 1

  • 如果是 false 就执行语句体 2


public static void main(String[] args){    // 判断给定的数据是奇数还是偶数    // 定义变量    int a = 1;    if(a % 2 == 0) {        System.out.println("a是偶数");    } else{        System.out.println("a是奇数");    }    System.out.println("结束");}
复制代码

if..else if...else

格式:


if (判断条件 1) {执行语句 1;} else if (判断条件 2) {执行语句 2;}...}else if (判断条件 n) {执行语句 n;} else {执行语句 n+1;}


执行流程:


  • 首先判断关系表达式 1 看其结果是 true 还是 false

  • 如果是 true 就执行语句体 1

  • 如果是 false 就继续判断关系表达式 2 看其结果是 true 还是 false

  • 如果是 true 就执行语句体 2

  • 如果是 false 就继续判断关系表达式…看其结果是 true 还是 false

  • 如果没有任何关系表达式为 true,就执行语句体 n+1。


案例:


public static void main(String[] args) {    // x和y的关系满足如下:    // x>=3 y = 2x + 1;    //‐1<=x<3 y = 2x;    // x<=‐1 y = 2x – 1;    // 根据给定的x的值,计算出y的值并输出。    // 定义变量    int x = 5;    int y;    if (x>= 3) {        y = 2 * x + 1;    } else if (x >= ‐1 && x < 3) {        y = 2 * x;    } else {        y = 2 * x ‐ 1;    }    System.out.println("y的值是:"+y);}
复制代码

if 语句和三元运算符的互换

在某些简单的应用中,if 语句是可以和三元运算符互换使用的。


public static void main(String[] args) {    int a = 10;    int b = 20;    //定义变量,保存a和b的较大值    int c;    if(a > b) {        c = a;    } else {        c = b;    }    //可以上述功能改写为三元运算符形式    c = a > b ? a:b;}
复制代码

选择语句

switch

格式:


switch(表达式) {case 常量值 1:语句体 1;break;case 常量值 2:语句体 2;break;...default:语句体 n+1;break;}


执行流程:


  • 首先计算出表达式的值

  • 其次,和 case 依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break 就会结束。

  • 最后,如果所有的 case 都和表达式的值不匹配,就会执行 default 语句体部分,然后程序结束掉。


public static void main(String[] args) {    //定义变量,判断是星期几    int weekday = 6;    //switch语句实现选择    switch(weekday) {        case 1:            System.out.println("星期一");            break;        case 2:            System.out.println("星期二");            break;        case 3:            System.out.println("星期三");            break;        case 4:            System.out.println("星期四");            break;        case 5:            System.out.println("星期五");            break;        case 6:            System.out.println("星期六");            break;        case 7:            System.out.println("星期日");            break;        default:            System.out.println("你输入的数字有误");            break;    }}
复制代码


switch 语句中,表达式的数据类型,可以是 byte,short,int,char,enum(枚举),JDK7 后可以接收字符串。

case 的穿透性

在 switch 语句中,如果 case 的后面不写 break,将出现穿透现象,也就是不会在判断下一个 case 的值,直接向后运行,直到遇到 break,或者整体 switch 结束。


public static void main(String[] args) {    int i = 5;    switch (i){        case 0:            System.out.println("执行case0");            break;        case 5:            System.out.println("执行case5");        case 10:            System.out.println("执行case10");        default:            System.out.println("执行default");    }}
复制代码


上述程序中,执行 case5 后,由于没有 break 语句,程序会一直向后走,不会在判断 case,也不会理会 break,直接运行完整体 switch。由于 case 存在穿透性,因此初学者在编写 switch 语句时,必须要写上 break。

循环语句

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

for

格式:


for(初始化表达式①; 布尔表达式②; 步进表达式④){循环体③}


执行流程:执行顺序:①②③④>②③④>②③④…②不满足为止。①负责完成循环变量初始化②负责判断是否满足循环条件,不满足则跳出循环③具体执行的语句④循环后,循环条件所涉及变量的变化情况

while

格式:


初始化表达式①while(布尔表达式②){循环体③步进表达式④}


执行流程:执行顺序:①②③④>②③④>②③④…②不满足为止。①负责完成循环变量初始化。②负责判断是否满足循环条件,不满足则跳出循环。③具体执行的语句。④循环后,循环变量的变化情况。while 循环输出 10 次 HelloWorld:


public static void main(String[] args) {    //while循环实现打印10次HelloWorld    //定义初始化变量    int i = 1;    //循环条件<=10    while(i<=10){        System.out.println("HelloWorld");        //步进        i++;    }}
复制代码

do...while

格式:


初始化表达式①do{循环体③步进表达式④}while(布尔表达式②);


执行流程:执行顺序:①③④>②③④>②③④…②不满足为止。①负责完成循环变量初始化。②负责判断是否满足循环条件,不满足则跳出循环。③具体执行的语句④循环后,循环变量的变化情况输出 10 次 HelloWorld:


public static void main(String[] args) {    int x=1;    do {        System.out.println("HelloWorld");        x++;    }while(x<=10);}
复制代码


do...while 循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成 false,也依然会循环一次。这样的循环具有一定的风险性,因此初学者不建议使用 do...while 循环。


public static void main(String[] args){    do{        System.out.println("无条件执行一次");    }while(false);}
复制代码

for 和 while 的小区别:

  • 控制条件语句所控制的那个变量,在 for 循环结束后,就不能再被访问到了,而 while 循环结束还可以继续使用,如果你想继续使用,就用 while,否则推荐使用 for。原因是 for 循环结束,该变量就从内存中消失,能够提高内存的使用效率。

  • 在已知循环次数的时候使用推荐使用 for,循环次数未知的时推荐使用 while。

跳出语句

break

使用场景:终止 switch 或者循环


  • 在选择结构 switch 语句中

  • 在循环语句中

  • 离开使用场景的存在是没有意义的


public static void main(String[] args) {    for (int i = 1; i<=10; i++) {        //需求:打印完两次HelloWorld之后结束循环        if(i == 3){        break;        }        System.out.println("HelloWorld"+i);    }}
复制代码

continue

使用场景:结束本次循环,继续下一次的循环


public static void main(String[] args) {    for (int i = 1; i <= 10; i++) {        //需求:不打印第三次HelloWorld        if(i == 3){            continue;        }        System.out.println("HelloWorld"+i);    }}
复制代码

死循环

死循环:也就是循环中的条件永远为 true,死循环的是永不结束的循环。例如:while(true){}。

嵌套循环

所谓嵌套循环,是指一个循环的循环体是另一个循环。比如 for 循环里面还有一个 for 循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数嵌套循环格式


for(初始化表达式①; 循环条件②; 步进表达式⑦) {for(初始化表达式③; 循环条件④; 步进表达式⑥) {执行语句⑤;}}


嵌套循环执行流程:执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥外循环一次,内循环多次。比如跳绳:一共跳 5 组,每组跳 10 个。5 组就是外循环,10 个就是内循环。


本文内容到此结束了,

如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力

如有错误❌疑问💬欢迎各位指出。

主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

发布于: 刚刚阅读数: 3
用户头像

鲜衣怒马意气风发,愿你归来仍是少年。 2018-10-19 加入

全栈开发者,CSDN博客专家,51CTO 专家博主,阿里云专家博主,华为云享专家,持续输出干货,欢迎关注。

评论

发布
暂无评论
Java中流程控制语句_Java_共饮一杯无_InfoQ写作社区