• Java流程控制语句


    第一章:流程控制

    1.1 顺序结构

    • Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句的执行。
    • 顺序结构是最简单的算法结构。
    • 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
    public static void main(String[] args){ //顺序执行,根据编写的顺序,从上到下运行   
        System.out.println(1); 
        System.out.println(2); 
        System.out.println(3); 
    }
    

    第二章:判断语句

    2.1 判断语句1--if

    • if语句第一种格式:if
    if(关系表达式){
          语句体;
    }
    
    • 执行流程
      • 首先判断关系表达式是true还是false
      • 如果是true则执行语句体
      • 如果是false则不执行语句体

    import java.util.Scanner;
    public class IfDemo01 {
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            System.out.println("请输入你的内容:");
            String i = s.nextLine();
            //equals:判断字符串是否相等
            //如果字符串等于Hello,则输出s
            if (i.equals("Hello")){
                System.out.println("s");//s
            }
            System.out.println("end");//end
            s.close();
        }
    }
    

    2.2 判断语句2--if...else

    • if语句第二种格式:if...else
    if(关系表达式) {
        语句体1; 
      }else{ 
        语句体2; 
    }
    
    • 执行流程
      • 首先判断关系表达式看其结果是true还是false
      • 如果是true就执行语句体1
      • 如果是false就执行语句体2

    import java.util.Scanner;
    public class IfDemo02 {
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            System.out.println("请输入你的成绩:");
            int score = s.nextInt();
            if(score>=60) {
                System.out.println("成绩合格");
            }else{
                System.out.println("不及格");
            }
            s.close();
        }
    }
    

    2.3 判断语句3--if...else if...else

    • if语句第三种格式: 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。

    import java.util.Scanner;
    public class IfDemo03 {
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            System.out.println("请输入你的成绩:");
            int score = s.nextInt();
            if (score == 100) {
                System.out.println("恭喜获得满分");
            } else if (score < 100 && score >= 90) {
                System.out.println("优秀");
            } else if (score < 90 && score >= 70) {
                System.out.println("良好");
            } else if (score < 70 && score >= 60) {
                System.out.println("及格");
            } else if (score < 60) {
                System.out.println("垃圾");
            } else {
                System.out.println("输入不合法");
            }
            s.close();
        }
    }
    

    2.4 嵌套的if结构

    • 使用嵌套的if...else语句是合法的,也就是说你可以在另一个if或者else if语句中使用if或者else if语句,你可以像if语句一样嵌套else if...else。
    • 格式
    if(布尔表达式1){
    //如果布尔表达式1的值为true执行代码
    if(布尔表达式2){
    //如果布尔表达式2的值为true执行代码
      }
    }
    

    2.5 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; 
    }
    

    第三章:选择语句

    3.1 选择语句--switch

    • switch中的变量类型可以是:byte , short , int , char , string

    • switch语句格式:

    switch(表达式) { 
      case 常量值1: 
       语句体1; 
       break; 
      case 常量值2: 
       语句体2;
       break; 
     ... 
      default: 
      语句体n+1; 
       break; 
    }
    
    • 执行流程
      • 首先计算出表达式的值
      • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束
      • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
    import java.until.Scanner;
    public class SwitchDemo01 {
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            System.out.println("请输入你的等级:");
            String i = s.next();
            //字符本质还是数字
            //反编译  java--class(字节码文件)-----反编译工具(IDEA)
            switch (i) {
                case "A":
                    System.out.println("优秀");
                    break;
                case "B":
                    System.out.println("良好");
                    break;
                case "C":
                    System.out.println("及格");
                    break;
                case "D":
                    System.out.println("垃圾");
                    break;
                default:
                    System.out.println("输入错误");
            }
            s.close();
        }
    }
    
    • 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。

    第四章:循环语句

    4.1循环概述

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

    4.2 循环语句1--for

    • for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。

    • for循环语句格式:

    for(初始化表达式①; 布尔表达式②; 步进表达式④){ 
               循环体③
    }
    
    • 执行流程
      • 执行顺序:①②③④>②③④>②③④…②不满足为止。
        • ①负责完成循环变量初始化
        • ②负责判断是否满足循环条件,不满足则跳出循环
        • ③具体执行的语句
        • ④循环后,循环条件所涉及变量的变化情况
    public class ForDemo02 {
        public static void main(String[] args) {
            //练习0-100的奇数和偶数的和
            int oddSum = 0;
            int evenSum = 0;
            for (int i = 0; i < 100; i++) {
                if (i%2 != 0) {
                    oddSum += i;
                }else{
                    evenSum+=i;
                }
            }
            int all = evenSum+oddSum;
            System.out.println("总和为:"+all);
        }
    }
    

    4.3 循环语句2--while

    • while循环语句格式:
    初始化表达式① 
      while(布尔表达式②){ 
      循环体③ 
      步进表达式④ 
    }
    
    • 执行流程
      • 执行顺序:①②③④>②③④>②③④…②不满足为止。
        • ①负责完成循环变量初始化。
        • ②负责判断是否满足循环条件,不满足则跳出循环。
        • ③具体执行的语句。
        • ④循环后,循环变量的变化情况。
    public static void main(String[] args) { 
      //while循环实现打印10次HelloWorld 
      //定义初始化变量 
       int i = 1; 
      //循环条件<=10 
       while(i<=10){ 
       System.out.println("HelloWorld"); 
      //步进 i++; 
       } 
    }
    

    4.4 循环语句3--do...while

    • 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); 
    }
    

    4.5 循环语句的区别

    • forwhile 的小区别:

      • 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继

        续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消

        失,能够提高内存的使用效率。

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

    4.6 跳出语句

    • 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); 
      } 
    }
    

    第五章:扩展知识

    5.1 死循环

    • 死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){}。
      • 在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的输入,但是用户输入多少数据我们并 不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要使用 到跳出语句了。

    5.2嵌套循环

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

    • 嵌套循环格式

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

      • 执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
        • 外循环一次,内循环多次。
        • 比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。
    • 练习:使用嵌套循环,打印5*8的矩形

    public static void main(String[] args) { 
       //5*8的矩形,打印5行*号,每行8个 
       //外循环5次,内循环8次 
       for(int i = 0; i < 5; i++){ 
          for(int j = 0; j < 8; j++){ 
       //不换行打印星号 System.out.print("*"); }
       //内循环打印8个星号后,需要一次换行 
         System.out.println();
       } 
    }
    
  • 相关阅读:
    logback日志输出到mongodb
    我常用打包插件
    MySql集群之读写分离配置
    ShardingSphereproxy5.0.0分布式雪花ID生成(三)
    ShardingSphereproxy5.0.0容量范围分片的实现(五)
    ShardingSphereproxy5.0.0分布式哈希取模分片实现(四)
    ShardingSphereproxy5.0.0取模分片(二)
    ShardingSphereproxy5.0.0建立mysql读写分离的连接(六)
    linux下minio部署安装
    [LintCode] 1375. Substring With At Least K Distinct Characters
  • 原文地址:https://www.cnblogs.com/joker-bea/p/12958403.html
Copyright © 2020-2023  润新知