流程控制语句结构

流程控制语句结构

顺序结构

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

分支结构

条件判断

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)多个条件表达式的范围

         1.互斥,没有交集,例如:

if(age>=0 && age<18){
        System.out.println("未成年");
}else if(age >=18 && age<60){
        System.out.println("成年");
}
//顺序可以互换

          2.包含,例如:

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也不成立,执行
    }
}
复制代码

选择结构

语法结构:

复制代码
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后面常量值的类型与表达式的类型要一致

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

(1)凡是可以使用switch...case一定可以用if..else代替,凡是反过来不一定

(2)当所有的条件判断是“常量的等值判断”,那么建议使用switch...case,可读性更好,效率更高

循环结构

for循环

语法结构:

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

执行的过程

(1)初始化表达式①

(2)循环条件的判断②

(3)如果条件成立,执行循环体语句③一次

(4)迭代表达式④

(5)回到(2),直到循环条件不成立,结束for循环

注意:

(1)for(;;)中两个分号不可以省略,但是表达式可以省略

(2)适用于起始条件和终止条件明确,循环次数比较明显的情况

while循环

语法结构:

while(循环条件){
    循环体语句;
}

执行过程:

(1)循环条件判断

(2)如果条件成立,执行循环体语句一次

(3)回到(1),直到循环条件不成立,结束while循环

注意:

(1)循环条件明显,次数不明显

(2)经常这样使用while(true)  和 break 结合

do while循环

语法结构:

do{
    循环体语句;
}while(循环条件);

执行过程:

(1)先执行一次循环体语句

(2)再判断循环条件,是否继续下一次

(3)如果循环条件成立,执行下一次循环体语句

(4)回到(2),直到循环条件不成立,结束do..while

注意:

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

foreach(增强for循环)

Java独有的循环结构,底层原理依然是for循环

语法结构:

for(元素类型 元素名称 : 遍历数组(集合)(或者能进行迭代的)){

}

当我们循环集合时采用foreach效率会有所提高,当我们循环数组时,二者效率相差不多,为方便删除数组元素,可以使用标准的for循环

嵌套

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

执行过程:

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

作用:重复执行某些代码

跳转、中断

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;
                }
            }
    }
复制代码

2.continue

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

3.return

表示结束当前方法

posted @   LuckySnail  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示