• java控制流


    流程控制

    一、分支结构

    1. if else

    有三种情况:
    在这里插入图片描述
    在这里插入图片描述

    第一种:

    if (条件表达式){
    	执行表达式
    }
    

    第二种:

    if(条件表达式){
    	执行表达式1
    }else{
    	执行表达式2
    }
    

    第三种

    if(条件表达式1){
    	执行表达式1
    } else if(条件表达式2){
    	执行表达式2
    	......
    }else{
    	执行表达式n
    }
    

    举例代码如下,三种情况:

    class IfTest 
    {
    	public static void main(String[] args) 
    	{
    		// 举例一
    		int heartbeats = 70;
    		if (heartbeats<60 || heartbeats >100){
    			System.out.println("需要进一步检查");
    		}
    		System.out.println("检查结束");
    
    		//举例2
    		int age = 20;
    		if (age < 18){
    			System.out.println("还未成年");
    		}else{
    			System.out.println("成年咯");
    		}
    	
    		//举例三
    		if (age<0){
    			System.out.println("你还没出生呢");
    		}
    		else if (age < 18){
    			System.out.println("青少年时期");
    		}else if (age < 35){
    			System.out.println("青壮年时期");
    		}else if (age < 60){
    			System.out.println("中年时期");
    		}else{
    			System.out.println("老年时期");
    		}
    	}
    }
    

    2. switch 语句

    switch语句是基于一个表达式的值决定要执行的一组语句。

    基本语法如下

    switch(表达式){
    case c1:
    	语句组1;
    	break;
    case c2:
    	语句组2;
    	break;
    .....
    case ck:
    	语句组k;
    	break;
    [default:
    	语句组;
    	break;]
    }
    

    switch语句是意思是:计算表达式的值,用该值依次和c1,c2,…ck比较,如果符合其中之一ci,那么就执行语句组i,如果没有的话就执行default

    说明:
    • switch中的表达式的值,可以是整型、枚举型或者String类的对象。
    • 整型表达式必须是int兼容的对象,即byte short char 和int。
    • switch语句中各case分支既可以是单条语句,也可以是由多条语句组成的语句组,不用{}括起来
    • default子句是可选的,并且最后一个break语句可以省略
    • 不论执行哪个分支,该顺序流都会顺序执行下去,直到break
    • switch结构的功能可以用if else if 来实现,但有时候switch结构更简单,可读性强,但会有限制,如数据类型上受到了限制,如果是double型,那就不能使用switch
    switch举例–输出一个日期所包含月份的天数
    class switchTest 
    {
    	public static void main(String[] args) 
    	{
    		int month = 2;
    		int year = 2000;
    		int numDays = 0;
    
    		switch(month){
    			case 1:
    			case 3:
    			case 5:
    			case 7:
    			case 8:
    			case 10:
    			case 12:
    				numDays = 31;
    				break;
    			case 4:
    			case 6:
    			case 9:
    			case 11:
    				numDays = 30;
    				break;
    			case 2:
    				if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0))
    				{
    					numDays = 29;
    				}
    				else 
    					numDays = 28;
    				break;
    		}
    		System.out.println("The date is 2002.2. The number of Days =" + numDays);
    	}
    }
    

    switch 语句的扩展

    我们上面介绍,传统的switch语句存在一些不方便之处,如果一个case分支执行后没有遇到break,会继续执行之后的case分支,直到遇到break。在Java SE 12 和 Java SE 13中,对switch进行扩展
    箭头case可以带有一个switch 表达式产生值的语句。“case … ->”分支定义如下:

    case label1,label2,....,labeln -> expression;(或者 throw-statement 或 block)
    

    我们可以看到,允许在一个case分支里出现以逗号分隔的多个常量值,程序运行时,这些值任何一个匹配成功,箭头右侧的代码就会被执行,并且在这些代码结束后,将不会允许switch表达式或语句中其他任何分支的代码。

    还有一个是用yield someValue 其中someValue 是yield 在case分支产生的switch表达式的值。
    Break 和 yield 语句使得switch语句和switch表达式易于区分,yield语句用于switch表达式,而break用于switch语句。传统的冒号case可以使用yield 语句构造switch表达式。例如

    int result = switch(s){
    case 'FOO':
    	yield 1;
    case 'BAR':
    	yield 2;
    default :
    	yield 0;
    }
    

    二、循环语句

    1.while和do while

    while 语句使一个语句块在某种条件为真时循环执行。该语句的语法如下:
    while(逻辑表达式){
    	语句或语句块
    }
    

    其中while语句中的表达式必须是逻辑型的。在该语句执行时,首先求表达式的值,如果等于true,则执行while语句块中的语句。直到while表达式的值变为false

    do while 语句语法如下:

    do{
    语句或语句块
    } while(逻辑表达式);

    do while 在执行的时候,是先执行循环体中的语句,再求表达式的值,直到表达式的值变为false。do while 是在循坏体的底部求表达式的值,所以,do while 语句至少要把循环体中的语句执行一遍。

    2.for 语句

    for 循坏执行的次数是可以在执行前确定的,for 语句的语法格式是:

    for(初始语句; 逻辑表达式 ; 迭代语句){
    	语句或语句块
    }
    

    for 语句执行时先执行初始语句,判断逻辑表达式的值,当逻辑表达式为true时,执行循环体语句,接着执行迭代语句,然后再去判断逻辑表达式的值。这个过程一直走下去,直到逻辑表达式的值为false。

    • 可以在for循环的初始化部分声明一个变量,它的作用域为整个for循环
    • for 循环通常用于循环次数确定的情况,但也可以根据循环结束条件完成循环次数不确定的情况
    • 在初始化部分和迭代部分可以使用逗号来进行多个操作
    • 初始化,终止以及迭代部分都可以为空语句,但分号不能省略,逻辑表达式为空时,默认表达式为恒真
    for(i = 0,j = 10;i < j; i++,j--){
    	...
    }
    
    for循环经常用于数组各个元素或一个字符串中各个字符的处理,例:用for语句输出一个数组的元素
    class forTest 
    {
    	public static void main(String[] args) 
    	{
    		int[] array = {32, 87, 3, 589, 12, 1076, 2000};
    		for (int i = 0;i < array.length ;i++ ){
    			System.out.print(array[i]+" ");
    		}
    		System.out.println();
    	}
    }
    

    在这里插入图片描述

    3.跳转语句

    Java中可以用break 和 continue 两个循坏跳转语句进一步控制循环。这两个语句的一般格式

    break[label];
    continue[label];
    

    这两个语句都可以带标签(label)使用,也可以不带标签使用。标签是出现在一个语句之前的标识符,标签后面要跟上一个:

    label : statement
    

    1.break

    不带标签的break就是可以用来终止最内层的循坏体。带了标签的break语句将结束标签所指示的循坏的执行

    例子: 在二维数组中搜索指定的值
    class breakTest 
    {
    	public static void main(String[] args) 
    	{
    		int[][] array = {{32, 87, 3, 589},{12, 1076, 2000, 8},{622, 127, 77, 955}};
    		int i = 0; 
    		int j = 0;
    		int searchfor = 12;
    		boolean foundIt = false;
    	search:
    		for (i = 0;i < array.length ;i++ ){
    			for (j = 0;j < array[i].length ;j++ ){
    				if (array[i][j] == searchfor){
    					foundIt = true;
    					break search;
    				}
    			}
    		}
    		if (foundIt){
    			System.out.println("Found" + searchfor + "at" + i + "," + j);
    		}
    		else{
    		System.out.println("找不到" + searchfor);
    		}
    	}
    }
    

    2.continue

    在循环中,continue 语句跳过当前循环的其余语句,执行下一次循环,当然执行下一次循环要判定循环条件是否满足,不带标签的continue是跳过最内层的循坏,并开始执行最内层循环的下一次循环

  • 相关阅读:
    电力系统直流潮流分析【N-1】(Matlab代码实现)
    深度学习框架比较:TensorFlow vs PyTorch
    网络、HTTP、HTTPS、Session、Cookie、UDP、TCP
    涵盖Java核心知识的综合指南:JavaGuide | 开源日报 0912
    解决 Django 开发中的环境配置问题:Windows 系统下的实战指南20231113
    软考初级网络管理员__网络单选题
    Android桌面Launcher源码浅析
    【20230921】关于sing-box命令行程序开机自启动运行(Windows、Linux)
    洛谷 P3808 【模板】AC 自动机(简单版)
    JPA 和 EclipseLink 如何使用数据库审计、数据库安全、代理身份验证和 VPD
  • 原文地址:https://blog.csdn.net/abc1234564546/article/details/127079448