• 选择控制语句和循环结构


    流程控制

    顺序结构

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

    选择结构(分支结构)

    if else 语句

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

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

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

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

    • ​ 如果是false就不执行{}里面的方法体内容,程序往后加载。

      1. ​ if else 双支情形

           格式:
        
        ​		if (布尔类型表达式) {
        
        ​		      // 语句体内容1;
        
        ​		} else {
                        // 语句体内容2;
                   }
        

        if else 多支的执行流程:

        • ​ 首先判断布尔类型表达式看它的结果是true还是false
        • ​ 如果是true,就执行语句体内容1
        • ​ 如果是false,就执行语句体内容2
      2. 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。

      1. 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中的语句体内容,然后switce case语句结束。

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

     #### 	case穿透性
    

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

    循环结构 【重点】

    ​ 【三种基本循环】for、while、do-while

    		###### 		 循环结构组成部分:一般可以分成4部分
    
    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.负责变量的迭代

    Scanner类和Random类的使用

    ​ API(Application Programming Interface) 应用程序编程接口,JavaAPI就是程序员的一本字典。

    是JDK中提供给我们使用的类的说明文档。只需要查阅API搜索自己需要的类。

    				##### Scanner类
    

    ​ 它是一个可以解析基本数据类型和字符串的文本扫描器。主要作用就是把外部的数据录入到系统中。

    		Scanner sc = new Scanner(System.in);
             // 让系统能够从外部录入一个整数  nextInt()
    		int num = sc.nextInt();
    		// 备注:System.in 可以实现通过键盘往系统中录入一个数据。
             // 让系统能够实现从外部录入一个浮点数(小数) nextDouble()
             double num02 = sc.nextDouble();
    		// 让系统能够实现从外部录入一个字符串数据。 next()
     		String str = sc.next();
    			
    

    while循环语句

    ​ 格式:

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

    ​ 执行流程:

    • ​ 执行顺序:1-->2-->3-->4-->2-->3-->4-->2-->3--->4--->......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 <= 100 ; i ++) {
                       // 跳出情形 i > 10
                       if (i > 10) {
                           break;
                       }
                       if (i  % 2 == 0) {
                           sum += i;
                       } 
                   }
        			// 跳出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("跳出三界外,不在五行中");
                           break;
                   }                     
             }
      

      continue

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

      	public static void main(String[] args) {
              	// continue
                  // 求一下100以内的偶数和  2+4+6+8+10+....+100
                 int sum = 0;
                 for (int i = 1; i <= 100; i++) {// i= 1 2 3 4 5 6 7 8 9 10 ......
                     // 使用场景 奇数跳过去,不参与累加和
                     if (i % 2 != 0) {// i % 2
                         continue;
                     }
                     sum += i;    
                 }     
          }		
      

      扩展知识点

      1. ​ 死循环

        ​ 概念:循环中条件永远都是true,死循环是永不结束的循环。 例如:while(true){}.

      ​ 死循环一般要和跳出语句结合。

      1. 循环嵌套

        ​ 概念:是指一个循环的循环体是另一个循环。比如说for循环中内置了一个for循环,就是循环嵌套。

        ​ 循环的次数= 外部循环的次数 * 内部循环的次数

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

      执行流程

      • ​ 执行流程:1--->2--->3--->5--->6--->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长方形 长为3,宽为8
                       /*
                       	    ********	
                       	    ********
                       	    ********
                        */
                       // 使用循环嵌套技术来实现
                       // 外循环3次,内循环8次
                       for (int i = 0; i < 3;i++) {
                           for (int j = 0; j < 8 ; j++) {
                               // 输出*   println("*")---->先打印内容再换行
                               System.out.print("*");
                           }
                           System.out.println();// 只换行不输出内容。
                       } 
          }
          

  • 相关阅读:
    SimpleDateFormat
    上传带进度条
    cookie和session
    poi导出数据
    commons-fileupload上传文件
    java异常处理
    常用的数据库MySql数据库语句总结
    流的文件操作
    Java输入输出流总结(转载)
    集合总结
  • 原文地址:https://www.cnblogs.com/luayan/p/13966820.html
Copyright © 2020-2023  润新知