目录

流程控制语句结构


流程控制语句结构

1 顺序结构

1.1 同一个方法中,从上往下,顺序执行

2 分支结构

2.1 条件判断

  • 1、单分支条件判断

    • 语法

      • if(条件表达式){ 当条件表达式为true时,要执行的语句块 }

        • (1)如果条件成立,就执行语句块,如果条件不成立,就不执行语句块
        • (2){}可以省略,默认只带一句,建议不要省略
  • 2、双分支条件判断

    • 语法

      • if(条件表达式){ 当条件表达式为true时,要执行的语句块1 }else{ 当条件表达式为false时,要执行的语句块2 }

        • (1)如果条件成立,就执行语句块1,如果条件不成立,就执行语句块2
        • (2){}可以省略,默认只带一句,建议不要省略
        • (3)else不可以单独存在的,必须有if配对
  • 3、多分支条件判断

    • 语法

      • if(条件表达式1){ 当条件表达式1为true时,要执行的语句块1 }else if(条件表达式2){ 当条件表达式2为true时,要执行的语句块2 }else if(条件表达式3){ 当条件表达式3为true时,要执行的语句块3 } ….. else{ 当以上所有条件表达式都不成立时,要执行的语句块n+1 }

        • (1)如果条件表达式1成立,执行语句块1,如果条件表达式1不成立才会去判断条件表达2,如果条件表达式2成立,那么执行语句块2,如果条件表达式2不成立,才会去看条件表达式3,依次类推。只有一个分支会被执行

        • (2){}可以省略,默认只带一句,建议不要省略

        • (3)else不可以单独存在的,必须有if配对

        • (4)多个条件表达式的范围

          • 互斥,没有交集

            • 例如

              • if(age>=0 && age<18){ System.out.println(“未成年”); }else if(age >=18 && age<60){ System.out.println(“成年”); }

                • 两个条件没有交集
            • 顺序可以互换

          • 包含

            • 例如

              • if(age<18){ System.out.println(“未成年”); }else if(age<60){ System.out.println(“成年”); }

                • 两个条件有包含关系
            • 顺序不可以调整

              • 范围小的在上面,范围大的在下面
  • 4、嵌套

    • 在任意一个语句块中,都还可以嵌套任意一种分支结构

    • 当外部的条件成立的情况下,才会进行内部的条件判断

      • 示例

        if(条件表达式1){

        if(条件表达式2){

          当条件表达式1成立,并且条件表达式2也成立时执行
        

        }else if(条件表达式3){

          当条件表达式1成立,并且条件表达式2不成立,条件表达式3成立时执行
        

        }else{

          当条件表达式1成立,并且条件表达式2不成立,条件表达式3不成立时执行
        

        }

        }else{

        if(条件表达式4){

          当条件表达式1不成立,条件表达式4成立,执行
        

        }else if(条件表达式5){

          当条件表达式1不成立,条件表达式4不成立,条件表达式5成立,执行
        

        }else{

          当条件表达式1不成立,条件表达式4不成立,条件表达式5也不成立,执行
        

        }

        }

2.2 选择结构

  • 语法结构

    switch(表达式){

    case 常量值:

      语句块;
    
      【break;】
    

    case 常量值:

      语句块;
    
      【break;]
    

    ….

    default:

      语句块;
    
      【break;】
    

    }

  • 表达式类型要求

    • 基本数据类型:byte,short,char,int
    • 引用数据类型:枚举(JDK1.5之后),String(JDK1.7之后)
  • 执行过程

    • 入口: (1)当与某个case匹配 (2)当与所有case都不匹配,如果有default,从default进入
    • 出口: (1)switch结束的} (2)break;
  • 其他要求

    • (1)case后面必须是常量或常量表达式
    • (2)所有case后面的值必须不相同
    • (3)case后面常量值的类型与表达式的类型要一致

2.3 条件判断与选择结构的取舍

  • (1)凡是可以使用switch…case一定可以用if..else代替,凡是反过来不一定
  • (2)当所有的条件判断是“常量的等值判断”,那么建议使用switch…case,可读性更好,效率更高

3 循环结构

3.1 、for循环

  • 语法结构

    • for(初始化表达式①; 循环条件②; 迭代表达式④){ 循环体语句(要重复的代码)③ }
  • 执行的过程

    • (1)初始化表达式①
    • (2)循环条件的判断②
    • (3)如果条件成立,执行循环体语句③一次
    • (4)迭代表达式④
    • (5)回到(2),直到循环条件不成立,结束for循环
  • 注意

    • (1)for(;;)中两个分号不可以省略,但是表达式可以省略
    • (2)适用于起始条件和终止条件明确,循环次数比较明显的情况

3.2 、while循环

  • 语法结构

    • while(循环条件){ 循环体语句; }
  • 执行过程

    • (1)循环条件判断
    • (2)如果条件成立,执行循环体语句一次
    • (3)回到(1),直到循环条件不成立,结束while循环
  • 注意

    • (1)循环条件明显,次数不明显
    • (2)经常这样使用while(true) 和 break 结合

3.3 、do..while循环

  • 语法结构

    • do{ 循环体语句; }while(循环条件);
  • 执行过程

    • (1)先执行一次循环体语句
    • (2)再判断循环条件,是否继续下一次
    • (3)如果循环条件成立,执行下一次循环体语句
    • (4)回到(2),直到循环条件不成立,结束do..while
  • 注意

    • (1)和while的最大区别,至少执行一次

3.4 、foreach

3.5 、嵌套

  • (1)无论哪种循环,循环中都可以嵌套任一种循环结构

  • (2)执行过程

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

3.6 作用:重复执行某些代码

4 跳转、中断

4.1 、break

  • 可以适用于switch和循环

  • 默认表示结束当层循环或switch

  • break 标签;

    • 表示结束指定的循环

    • 标签:循环

        out_label:for(int i = 1; i<=5; i++){
      
        	inner_label:while(true){
      
        		System.out.println("请输入数字:");
      
        		int num = input.nextInt();
      
      
      
        		if(num>0){
      
        			positive ++;
      
        		}else if(num<0){
      
        			negative++;
      
        		}else{
      
        			//break;//结束的是while内层循环
      
        			break out_label;
      
        			//break inner_label;
      
        		}
      
        	}
      

      }

4.2 、continue

  • 只能用于循环
  • 表示提前结束当层本次循环,进入下一次循环

4.3 、return

  • 结束当前方法