欢迎光临
我们一直在努力

java的3种流程控制语句

Java 流程控制语句 完整笔记

一、流程控制结构分类

  • 顺序结构

    从上到下,依次执行,是程序默认执行方式。

  • 分支结构

    根据条件判断,选择不同执行路径。

    关键字:if、switch。

  • 循环结构

    重复执行某段代码,直到满足终止条件。

    关键字:for、while、do-while。


  • 二、分支结构:if 语句的三种结构

    1. 单分支结构

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

    • 注意事项:

    • 关系表达式的返回值类型只能为布尔类型

      // if条件判断语句
      //if的条件表达式必须是布尔类型,不能是其他类型
      if(true){
      System.out.println("条件表达式为true");//成功运行
      }
      else {
      System.out.println("条件表达式为false");
      }

    • 关系表达式的返回值为 true 时执行,false 跳过。

    • 含有运算符和操作数的式子叫做表达式,含有关系运算符和逻辑运算符的表达式的返回值类型为布尔类型

    • 语句体只有一行时,{} 可省略,但不推荐,因为容易出错,例如:int a=0相当于两行代码;

    • 布尔变量判断:直接写 if(flag),不要写 if(flag == true)。可以运行但没必要

    2. 双分支结构

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

    • 二选一执行。

    3. 多分支结构

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

    • 从上到下依次判断执行,只执行第一个匹配条件。

      int a = 15;
      if (a > 1) {
      System.out.println("a大于15");//只执行此处代码块
      } else if (a > 2) {
      System.out.println("a等于15");
      } else {
      System.out.println("a小于15");
      }

    • if适合对范围进行判断。

    if 补充注意事项

    • if 后的{}不要加分号,否则逻辑失效。
    • 条件里是判断 ==,不是赋值 =。
    • else 不能单独存在,必须跟在 if/else if 后。

    三、分支结构:switch 语句

    1. 基本格式

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

    2. 表达式支持接收的类型

    • 基本类型:byte、short、char、int
    • 引用类型:String(Java 7+之后有)、枚举 enum

    3. 注意事项

    • case 后必须是常量 / 字面量,不能重复。

    • break 用于跳出 switch,省略会发生 case 穿透。

    • default 所有 case 不匹配时执行,位置任意可以放到任意位置,建议放最后,阅读时比较舒服。

    • 可利用穿透让多个 case 执行同一逻辑。

      /*
      1.case后面只能是整数类型,字符类型,字符串类型,枚举类型.不能是浮点数类型和布尔类型
      2.case后面只能是常量表达式,不能是变量表达式
      3.case后面不能重复,不能有两个case分支的值相同,否则会发生编译错误

      4.case穿透现象:
      switch语句中每个case分支后面必须有break语句,否则会发生穿透现象,
      即执行完当前case分支后
      会继续执行下一个case分支,直到遇到break语句或者switch语句结束
      即:缺少break将导致case穿透一直执行下去,直到遇到break或者switch结束

      5.default分支是可选的,可以没有default分支,如果没有default分支,
      当switch语句中没有匹配的case分支时,
      程序将继续执行switch语句后面的代码

      */

      int b = 2 ;
      switch (b) {
      case 1:
      { System.out.println("b等于1");}//不执行

      case 2:
      System.out.println("b等于2");//执行完case2后没有break语句,继续执行case3

      case 3:
      System.out.println("b等于3");//执行完case3后没有break语句,继续执行default

      default:
      System.out.println("b不等于1,2,3");//执行完default后switch语句结束

      }

    • switch 不能判断 boolean,因为switch(表达式)接收的是一个特殊的值,类型限制。同时Switch是值匹配的工具,而布尔类型是为逻辑判断服务的。

    if 与 switch 对比

    • if:适合对范围、复杂条件判断。
    • switch:适合固定离散值匹配,把有限的数据一一列举出来,选择其一。

    四、循环结构

    1. for 循环(知道循环次数)

    for (初始化语句; 条件判断; 条件更新) {
    循环体;
    }

    • for(int i=0;i<=10;i++),不一定非要是i++,改成2i之类的i的迭代就行,i<=0:关系运算符和操作数组成的表达式,返回值为布尔类型

      for(int i=1;i<5;i=2*i){//for循环,i=2*i每次循环i的值翻倍
      //for循环的三个部分:初始化表达式,循环条件表达式,迭代表达式
      //并不一定都是i++,也可以是i=2*i,i=i+2等
      System.out.println("i="+i);
      }

    • 初始化只执行一次。

    • 条件为 true 执行循环体。

    • 循环内定义的变量,外部无法访问。

    2. while 循环(不确定次数,只知道终止条件时使用)

    初始化语句;
    while (条件判断) {
    循环体;
    条件更新;
    }

    • 先判断,后执行。
    • 可能一次都不执行。

    3. do-while 循环(至少执行一次)

    初始化语句;
    do {
    循环体;
    条件更新;
    } while (条件判断);

    • 先执行一次,再判断。
    • 循环体至少执行一次。

    三种循环对比

    循环执行顺序适用场景
    for 先判断后执行 确定次数
    while 先判断后执行 不确定次数
    do-while 先执行后判断 至少执行一次

    五、跳转控制语句

    • break

      结束整个循环 /switch,跳出当前所在层。

    • continue

      结束本次循环,跳过剩余语句,直接进入下一次判断。

      只能用于循环,不能用于 switch。


    六、键盘输入 Scanner

    import java.util.Scanner;

    public class Test {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int num = sc.nextInt();
    sc.close();
    }
    }


    赞(0)
    未经允许不得转载:171主机测评 » java的3种流程控制语句
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址