流程控制

Posted shamao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流程控制相关的知识,希望对你有一定的参考价值。

摘要:本文主要介绍Java编程中的流程控制语句。

分类

流程控制指的是在程序运行的过程中控制程序运行走向的方式。主要分为以下三种:

顺序结构:从上到下依次执行每条语句操作。

分支结构:根据条件判断执行哪些语句操作。

循环结构:根据循环初始条件和终结要求,执行循环体内的操作。

分支结构

Java提供两种分支结构:if和switch。其中if语句使用布尔表达式或者是布尔值进行判断来进行分支的控制,而switch语句则是使用整数,String类型,枚举类型。

分支的各种情况要满足不重复,不遗漏的原则。即:相互独立,完全穷尽(MECE,Mutually Exclusive Collectively Exhaustive)。

if分支结构

if语句使用布尔表达式或者是布尔值进行判断来进行分支的控制,主要有三种结构。

if 语句

语法:

1 if ( 条件 ) {
2     语句;
3 }

执行:

如果条件成立,执行大括号中的语句,如果条件不成立,跳过大括号,执行后面的语句。

举例:

判断一个数字是否是正数。

1 int i = 1;
2 if (i > 0) {
3     System.out.println(i + "是正数!");
4 }

if … else 语句

语法:

1 if ( 条件 ) {
2     语句;
3 } else {
4     语句;
5 }

执行:

如果条件成立,执行大括号中的语句,如果条件不成立,执行else后面大括号中的语句。

举例:

判断成绩是否及格。

1 int i = 58;
2 if (i >= 60) {
3     System.out.println("成绩及格了!");
4 } else {
5     System.out.println("成绩不及格!");
6 }

if … else if … else 语句

语法:

1 if ( 条件 ) {
2     语句;
3 } else if ( 条件 ) {
4     语句;
5 } else {
6     语句;
7 }

执行:

如果第一个条件成立,执行第一个条件后面大括号里的语句,如果第一个条件不成立,判断下一个条件,依次类推,如果所有条件都不成立,执行else中的语句。

举例:

判断成绩级别。

 1 int i = 78;
 2 if (i == 100) {
 3     System.out.println("满分!");
 4 } else if (i >= 90) {
 5     System.out.println("优秀!");
 6 } else if (i >= 80) {
 7     System.out.println("良好!");
 8 } else if (i >= 60) {
 9     System.out.println("及格!");
10 } else {
11     System.out.println("不及格!");
12 }

switch分支结构

语法:

 1 switch ( 表达式 ) {
 2 case 常量:
 3     语句;
 4     break;
 5 case 常量:
 6     语句;
 7     break;
 8 default:
 9     语句;
10     break;
11 }

执行:

拿着变量或表达式得到的值,去和各个case后面常量的值做判断,看是否匹配,如果有一个匹配的,则执行当前常量后面的语句,遇见break则不再执行,如果没有遇见,则一直顺序往下执行。

如果没有匹配的,则执行default后面的语句。

举例:

判断性别。

 1 int sex = 1;
 2 switch (sex) {
 3 case 1:
 4     System.out.println("性别男!");
 5     break;
 6 case 2:
 7     System.out.println("性别女!");
 8     break;
 9 default:
10     System.out.println("无性别!");
11     break;
12 }

注意:

case后的常量值不可以重复。

default可以省略,而且default位置也可以提到前面,只是不建议。

break可以省略。

switch只能做等值判断。

if结构和switch结构的对比

相同点:

都可以实现分支结构。

不同点:

能用switch解决的题目肯定能用if解决;但能用if解决的题目不一定可以用switch解决。

只能处理等值的条件判断,且条件是整型变量或字符变量的等值判断。

switch结构的效率比if结构的效率高。

循环结构

循环语句也称作迭代语句,循环语句可以在满足条件的情况下反复执行某一段代码。

while循环结构

语法:

1 while ( 条件 ) {
2     语句;
3 }

执行:

先判断条件是否满足,如果不满足则跳出循环,如果满足则执行语句,然后再次判断,直到条件不满足或跳出循环。

举例:

循环打印从0到10的数字。

1 int i = 0;
2 while (i <= 10) {
3     System.out.println(i);
4     i++;
5 }

do-while循环结构

语法:

1 do {
2     语句;
3 } while ( 条件 );

执行:

先执行一次语句,然后判断条件是否满足,如果不满足则跳出循环,如果满足则执行循环语句,直到条件不满足或跳出循环。

举例:

循环打印从0到10的数字。

1 int i = 0;
2 do {
3     System.out.println(i);
4     i++;
5 } while (i <= 10);

for循环结构

语法:

1 for ( 初始化表达式 ; 条件 ; 变量更新 ) {
2     语句;
3 }

执行:

先执行一次初始化表达式,然后判断条件,如果不满足则跳出循环,如果满足则执行语句,然后执行变量更新。再判断条件是否满足,不满足则跳出,满足则执行语句和变量更新,直到条件不满足或跳出循环。

举例:

循环打印从0到10的数字。

1 for (int i = 0; i <= 10; i++) {
2     System.out.println(i);
3 }

控制循环结构

跳转语句用于实现循环执行过程中程序流程的跳转。

break 语句

在switch条件语句和循环语句中都可以使用break语句。

当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。

当它出现在循环语句中,作用是跳出循环语句,执行后面的代码。

举例:

循环打印从0到10的数字,要求当要打印6时停止循环。

1 for (int i = 0; i <= 10; i++) {
2     if (i == 6) {
3         break;
4     }
5     System.out.println(i);
6 }

结果:

1 0
2 1
3 2
4 3
5 4
6 5

当条件判断i为6时,循环终止,不再打印6和之后的数字。

continue 语句

只能用在循环语句中,它的作用是跳过本次循环,执行下一次循环。

举例:

循环打印从0到10的数字,要求当要打印6时跳过循环,即不要打印6。

1 for (int i = 0; i <= 10; i++) {
2     if (i == 6) {
3         continue;
4     }
5     System.out.println(i);
6 }

结果:

 1 0
 2 1
 3 2
 4 3
 5 4
 6 5
 7 7
 8 8
 9 9
10 10

当条件判断i为6时,循环跳过,不再打印6,继续打印之后的数字。

以上是关于流程控制的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

PHP中的流程控制

在导航控制器中杀死片段

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段