流程控制(顺序,选择(分支 if else ,switch case),循环)和跳出语句

顺序结构

​ 程序从上往下进行加载,按照代码的编写顺序进行执行

选择结构(分支结构)

  • if else 语句

    1. if 单支情况
      if语句的格式:
      if(布尔类型表达式/布尔类型值){
      //语句体…

      ​ }
      if语句(单支)的执行流程:

      ​ 首先判断布尔类型表达式看他的结果是false还是true

      ​ 如果是true就执行{}里面的方法体内容

      ​ 如果是false就不执行{}里面的方法体内容,程序往后加载
      在这里插入图片描述

    2. if else 多支的执行流程:

      格式:

      ​ if (布尔类型表达式/布尔类型值){

      ​ //语句体内容1

      }else {

      ​ //语句体内容2

      }

      执行流程:

      • 首先判断布尔类型表达式看它的结果是false还是true
      • 如果是true就执行语句体内容1
      • 如果是false就执行语句体内容2
    3. 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
      • 如果都是false,就执行else{}里面的方法体n+1
    4. if … if…else…else 语句 嵌套情形

      格式:

      ​ if(布尔类型表达式1){

      ​ //方法体内容1

      ​ …

      ​ if(布尔类型表达式2){

      ​ //方法体内容2

      ​ …

      ​ }else{

      ​ //方法体内容3

      ​ }

      ​ }else{

      ​ //方法体内容4

      ​ }

      执行流程:

      • 首先判断布尔类型表达式1,看其结果是true还是false
      • 如果是true,就执行方法体内容1,再继续判断布尔类型表达式2,看其结果是true还是false,如果是true就执行方法体内容2,如果是false就执行方法体内容3
      • 如果是false,就执行方法体内容4,之后加载后面的内容
    if语句和三目运算符呼唤
    int num01 = 10;
    int num02 = 20;
    //定义一个变量,保存num01和num02的最大值
    int c;
    if (num01 > num02){
        c = num01;
    }else{
        c = num02;
    }
    //上面的语句可以使用三目运算符
    c = num01 > num02 ? num01 : num02;
    
  • switch case语句

    格式:

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

    执行流程:

    • 首先计算出表达式中的值
    • 其次,依次和case后面的常量值作比较,一旦有对应的值,就会执行相应的语句内容,再执行的过程中,遇到break就会结束switch case语句
    • 最后如果所有的case都和表达式的值不匹配,就会执行default中的语句体内容,然后switch case 语句结束

    注意:再switch语句中,表达式的数据类型,可以是byte/short/char/enum(枚举),JDK1.7之后可以接受字符串类型

    case穿透性

    ​ 在switch语句,如果case后面的break省略掉,将会出现穿透现象,不会判断后面的情形值,直接加载后面的值,直到遇到break才会结束

循环结构

三种基本循环 for ,while , do-while

循环结构的组成部分:一般可以分为四部分:

  1. 初始化语句:在循环最初开始时,需要定义一个初始化的变量,而且只会定义一次
  2. 条件判断(结束条件):如果条件成立,进入循环,如果条件不满足,退出循环
  3. 循环体内容:重复要做的事情的内容,可能包含很多条语句(事情是有规律的)
  4. 迭代语句(步进语句):每次循环结束之后需要执行步进语句(迭代语句),对初始化的语句做步进(迭代)

for循环语句结构

格式:

for(1.初始化语句;2.条件判断表达式;4.迭代语句){
    //3.循环体内容
}
  • 执行顺序:1–>2–>3–>4–>2–>3–>4–>2—>3–>4…2不满足为止。
  • 1负责定义循环变量并且进行初始化
  • 2负责判断是否满足循环条件
  • 3负责执行具体语句实现某个功能
  • 4迭代循环变量

在这里插入图片描述

while循环语句

格式:

1.初始化语句;
2.while(判断条件){
	//3.循环体内容
    //4.步进语句;
}	

执行流程:

  • 执行顺序 1–>2—>3–>4–>2–>3—>4—>2-----> …2不满足为止
  • 1负责循环变量初始化
  • 2负责判断是否满足循环条件,不满足则跳出循环
  • 3负责执行具体语句,实现某个功能。
  • 4.迭代循环变量

do-while循环语句

格式

//1.初始化语句
do {
    //3.循环体内容
    //4.迭代语句
}while(2.判断条件);

执行流程

  • 执行顺序:1–>3–>4—>2---->3–>4—>2—>3—>4—>…2不满足为止
  • 1负责定义循环变量并且进行初始化
  • 2负责判断是否满足循环条件
  • 3负责执行具体语句实现某个功能
  • 4迭代循环变量

备注:会无条件执行一次循环体内容,即使判断条件不满足,也依然会循环一次,这样的循环是有风险的,不建议使用

循环语句的区别

for和while的区别

  • 控制语句中所涉及到的循环变量,当for循环结束后,定义的循环变量不能被访问到,而while循环结束后依然可以被访问到。如果不继续使用循环变量,建议使用for循环,for循环结束后,循环变量就会从内存中消失,能够提高内存的使用效率
  • 在已知循环次数的情况下,建议使用for循环,当循环次数不确定时使用while循环

跳出语句

break,continue两个语句

break

​ 使用情景:终止switch或者循环语句
​ 备注:离开了使用场景对于break来说没有意义。

public static void main(String[] args){
    //使用break语句
    //跳出循环语句
    //10以内的偶数和
    int sum = 0;
    for (int i = 0; i <= 12; i++){
        //跳出情形 i > 10 
        if(i >= 10){
            break;
        }
        if(i % 2 ==0){
            sum +=i
        }
        break;
    }
    //跳出switch case语句
    //季节 四个季节
    String season = "春季";
    switch (season) {
        case "春季":
            System.out.println("万物复苏");
            break;
        case "夏季":
            System.out.println("烈日");
            break;
        case "秋季":
            System.out.println("丰收");
            break;
        case "冬季"
            System.out.println("下雪");
            break;
        default:
            System.out.println("ti");
            break;
    }
    
}
continue

使用情形:结束本次循环,继续下一次循环

public static void main(String[] args){
    //coutinue
    //求一下100以内的偶数和
    int sum = 0;
    for (int i = 1; i <= 100; i++){
        //使用场景 奇数跳过去不参与累加和
        if (i % 2 != 0){
            continue;
        }
        sum += i;
    }
}
扩展知识点
  1. 死循环
    概念:循环中的条件永远都是true,死循环是永不结束的循环。例如while(true){}
    四循环一般要和跳出语句结合。

  2. 循环嵌套
    概念:是指一个循环的循环体是另一个循环。比如说for循环内置了一个for循环,就是嵌套循环。
    循环的次数 = 外部循环的次数 * 内部循环的次数

    格式:
        for (1.初始化语句1;2.判断语句1;4.迭代语句1){
            //3循环体内容
            forfor (5.初始化语句2;6.判断语句2;8.迭代语句2){
                //7循环体内容2
            }
        }
    

    执行流程

    • 执行流程:1–>2–>3–>5–>5–>7–>8–>6–>7–>8–>…6不满足为止(跳出循环)
      –>4–>2–>3…5–>6–>7–8-->6–>7–>8–>…6不满足为止(跳出循环)
      —>…2不满足为止(结束整个循环),加载外层for循环后面的语句。

    • 外循环一次,内循环多次

      public static void main(String[] args){
          //使用场景
          //打印3*8的长方形 长为8,宽为3
          for (int i = 0; i < 3; i++){s
              for (int j = 0; j < 8; j++){
                  System.out.print("*");//不换行输出
              }
              System.out.println();//换行
          }  
      }
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值