Java——流程控制

发布于:2023-01-02 ⋅ 阅读:(384) ⋅ 点赞:(0)

Java 流程控制

Java 中分为三种基本的流程控制结构:顺序结构分支结构循环结构
顺序结构: 从上而下顺序执行每一行代码 (默认结构)
分支结构: 根据条件来选择性地执行某段代码
循环结构: 根据循环条件重复执行某段代码。

一、顺序结构

顺序结构: 从上而下顺序执行每一行代码。顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转。

二、分支结构

分支结构: 包含 ifelseswitch,根据条件来选择性地执行某段代码

if…else…

  • 单分支:if

    如果表达式为 true 执行语句体, 否者不执行。

    if(关系表达式){
      	语句体;
  • 双分支:if…else

    如果 表达式为 true 执行 语句体1,如果为 false 就执行 语句体2

    if(关系表达式) { 
      	语句体1;
    }else {
      	语句体2;
    }
    
  • 多分支:if…else if…else

    首先判断 关系表达式1 看其结果是 true 还是 false
    如果是 true 就执行 语句体1,然后结束当前分支
    如果是 false 就继续向下执行判断,都为 false,最终执行 else

    if (关系表达式1) {
      	执行语句1;
    } else if (关系表达式2) {
      	执行语句2;
    }
    ...
    }else if (关系表达式n) {
     	执行语句n;
    } else {
      	执行语句n+1;
    }
    
  • 分支嵌套:if…else 嵌套

    分支嵌套 就是在 if 的语句块中,或者是在 else 语句块中,又包含了另外一个条件判断(可以是单分支、双分支、多分支)

    public static void main(String[] args) {	
    	    int score = 89;
    	    if(score < 0 || score > 100){
    	      	System.out.println("你的成绩是错误的");
    	    }else{
    	    	if(score >= 90){
    		      	System.out.println("你的成绩属于优秀");
    		    }else if(score >= 80){
    		      	System.out.println("你的成绩属于好");		
    		    }else if(score >= 60){
    		      	System.out.println("你的成绩属于及格");
    		    }else {
    		      	System.out.println("你的成绩属于不及格");
    		    }	
    	    }
    	}
    

switch

  • 语法格式:

    1. switch(表达式) 的值的类型,只能是:4种基本数据类型(byteshortcharint);两种引用数据类型(JDK1.5 之后 枚举、JDK1.7 之后String

    2. case 后面必须是常量值,而且不能重复

    switch(表达式){
        case 常量值1:
            语句块1;
            break;
        case 常量值2:
            语句块2;
            break;  
        ...
       	default:
            默认语句块;
            break;  
    }
    
  • 执行过程:

    一旦从 入口 进入,就会顺序往下执行,直到遇到 出口 ,中途可能发生 贯穿

    入口: ①.表达式 的值与 case 后面的某个常量值匹配,就从这个case 进入;②. 没有找到就寻找 default 分支进入; 不管 default 在哪里。
    出口: ①. switch 执行到最后退出 ②. 遇到了 break 退出

两种分支语句的区别

  • if else: 是一条比较指令,通过判断每一个条件,执行对应的分支。
    switch: 是一张地址表,只需访问对应索引号的表项就能定位分支,所以 switch 效率较高。

  • if else: 语句的条件是一个布尔类型值。通常根据某个判断结果进入分支,使用范围更广。
    switch: 语句的条件是一个常量值。条件是几个固定的常量值,使用 switch 语句。

三、循环语句

循环语句: 包含forwhiledo...while,可以在满足循环条件的情况下,反复执行某一段代码。

for 循环

  • 语法格式:

       for(初始化语句①; 循环条件语句②; 迭代语句④){
       		循环体语句③
       }
    
       for(;;){
           循环体语句块;//如果循环体中没有跳出循环体的语句,那么就是死循环
       }
    

    注意:

    (1)for ( ; ; ) 中的 两个 ; 是不能多也不能少
    (2)循环条件必须是 boolean 类型
    (3)如果循环条件语句②省略的话,就默认为循环条件成立

  • 执行流程

    1. 执行 初始化语句①,完成循环变量的初始化
    2. 执行循环条件语句②,看循环条件语句的值是 true,还是 false
      2.1 如果是 true,执行第三步
      2.2 如果是 false,循环语句中止,循环不再执行
    3. 执行循环体语句③
    4. 执行迭代语句④,针对循环变量重新赋值
    5. 根据循环变量的新值,重新从第二步开始再执行一遍
  • 案例

    打印10次的HelloWorld

    public class Test{
    	public static void main(String[] args){
    		
    		for(int i = 0; i < 10; i++){
    			System.out.println("Hello, World!!!");
    		}
    			
    	}
    }
    

while 循环

  • 语法格式

    while (循环条件语句①) {
        循环体语句②;
    }
    while(true){
         循环体语句;//如果此时循环体中没有跳出循环的语句,也是死循环
    }
    
  • 执行流程

    1. 执行 循环条件语句①,看循环条件语句的值是 true,还是 false
      1.1 如果是 true,执行第二步
      1.2 如果是 false,循环语句中止,循环不再执行
    2. 第二步:执行循环体语句②
    3. 第三步:循环体语句执行完后,重新从第一步开始再执行一遍
  • 案例

    打印10次的HelloWorld

    public class Test{
    	public static void main(String[] args){
    		
    		int i = 0;
    		while(i < 10){
    			System.out.println("Hello, World!!!");
    			i++;
    		}
    			
    	}
    }
    

do…while 循环

do…while 结构的循环体语句至少会执行一次

  • 语法格式:

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

    1. 执行循环体语句①
    2. 执行循环条件语句②,看循环条件语句的值是 true,还是 false
      2.1 如果是 true,执行第三步;
      2.2 如果是 false,循环语句终止,循环不再执行。
    3. 循环条件语句执行完后,重新从第一步开始再执行一遍
  • 案例

    打印10次的HelloWorld

    public class Test{
    	public static void main(String[] args){
    		
    		int i = 0;
    		do{
    			System.out.println("Hello, World!!!");
    			i++;
    		}while(i < 10);
    			
    	}
    }
    

三种循环语句的区别

一、从循环次数角度分析

  • do…while 循环 至少执行一次循环体语句

  • for 和 while 循环 先循环条件语句是否成立,然后决定是否执行循环体,可能一次也不执行。

二、从循环变量的生命周期角度分析

  • for 循环 的循环变量在 for() 中声明的,在循环语句结束后,变量不可以被访问;
  • while 和 do…while 循环的循环变量因为在外面声明的,所以 whiledo...while 结束后可以被继续使用的

三、如何选择

  • 遍历有明显的循环次数(范围)的需求,选择 for 循环
  • 遍历没有明显的循环次数(范围)的需求,选择 while 循环
  • 如果循环体语句块至少执行一次,选择 do…while循环
  • 本质上:三种循环之间是可以互相转换的

嵌套循环

嵌套循环: 是指一个循环的循环体是另一个循环。比如 for循环 里面还有一个 for循环,就是 嵌套循环
三种循环可以任意互相嵌套。

  • 语法格式:

    for(初始化语句①; 循环条件语句②; 迭代语句⑦) {
        for(初始化语句③; 循环条件语句④; 迭代语句⑥) {
          	循环体语句⑤;
        }
    }
    
  • 案例:

    public class Test01 {
        public static void main(String[] args) {
            // 打印出下面的图形
            /*
                *
                **
                ***
                ****
             */
            // 外层循环控制行数
            for (int i = 0; i < 4; i++) {
                // 1. 内层循环第一次执行: j = 0 i = 0 打印一次 *
                // 2. 外层循环执行一次, i++, 然后 j 重新赋值 0; 0 <= 1 打印两次 *
                // 3. 外层最后一次循环 i=3 然后内层循环 0 <= 3 也就是四次 *
                // 4. i++ 外层(4 < 4) 条件不成立, 跳出循环
                for (int j = 0; j <= i; j++) {
                    System.out.print('*');
                }
                System.out.println();
            }
        }
    }
    
    

    运行结果:

    *
    **
    ***
    ****
    

四、break 和 continue 关键字

break

break 关键字switch循环语句 中使用

switch 中表示跳出 switch 分支语句
循环语句 中表示跳出最近的一次循环语句

  • 案例

    public class Test02 {
        public static void main(String[] args) {
            // 输出 1-10 的数字, 如果数字为6, 结束循环
            for (int i = 1; i <= 10; i++) {
                if(i == 6){
                    System.out.print("我是"  + i +", 到我就结束了");
                    break;
                }
                System.out.print("数字" + (i) + " ");
            }
        }
    }
    	
    

    运行结果:

    数字1 数字2 数字3 数字4 数字5 我是6, 到我就结束了
    

continue

continue 只能在循环语句中使用,表示跳出本次循环体, 进行下次循环

  • 案例
    public class Test03 {
        public static void main(String[] args) {
            // 输出 1-10 的数字, 但是不输出 6
            for (int i = 1; i <= 10; i++) {
                if(i == 6){
                    continue;
                }
                System.out.print("数字" + (i) + " ");
            }
        }
    }
    
    运行结果
    数字1 数字2 数字3 数字4 数字5 数字7 数字8 数字9 数字10
    
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到