【JavaSE】流程控制

流程控制

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。换句话说,流程控制语句就是用来控制程序中一些语句的执行时间、顺序以及次数等。

程序设计中规定的三种流程控制,即:顺序结构、分支结构、循环结构。

顺序结构

顺序结构就是从上到下顺序的执行,即上一行对某个变量的修改会对下一行产生影响。

分支结构

定义

根据条件,选择性地执行某段代码。

有if-else以及switch-case两种分支语句。

if-else

基本语法

结构一:单分支条件判断

if (条件表达式) {

        语句块;

}

结构二:双分支条件判断

if (条件表达式) {

        语句块1;

} else {

        语句块2;

}

结构三:多分支条件判断

if (条件表达式1) {

        语句块1;

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

        语句块2;

}

. . .

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

        语句块n;

} else {

        语句块n + 1;

}

Scanner:键盘输入功能

1. 导包:import java.util.Scanner;

2. 创建Scanner类型的对象:Scanner scan = new Scanner(System.in);

3. 调用Scanner类的相关方法:(next() / nextXxx),来获取指定类型的变量。

4. 释放资源:scan,close();

注意:需要根据相应的方法,来输入对应类型的值。如果输入的数据类型与要求的数据类型不符合,那么就会报异常导致程序终止;不过IDEA已经自动判断类型是否符合,如果不符合,语法自动就会报错,无需进行编译即可得知。

// 步骤一:导入对应的包
import java.util.Scanner;

public class Scanner {

    public static void main(String[] args) {

        // 步骤二:创建一个Scanner的实例
        Scanner scan = new Scanner(System.in);

        // 步骤三:调用Scanner类中的方法,获取指定类型的变量
        int a = scan.nextInt(); // 获取int类型
        Boolean b = scan.nextBoolean(); // 获取布尔类型
        String c = scan.next(); // 获取String
        char d = scan.next().charAt(0); 
        // 在基本数据类型中,没有获取字符类型的方法,因此只能利用String获取之后再转换

        // 步骤四:释放资源
        scan.close();

    }

}

随机数

调用Math类中的random()方法,即可获取[0, 1)范围的double类型的随机数。

如果想要获取指定类型的随机数:(int) (Math.random * (b-a+1)) + a → [a,b]

swtch-case

基本语法

switch (表达式) {

        case 常量值1 :

                语句块1;

                // break;

        case 常量值2 :

                语句块2;

                // break;

                // . . .

        [default:

                语句块n + 1;

                break;

        ]

}

执行过程 

根据表达式中的值,依此匹配case语句,一旦与某一个case中的常量相等,那么就执行此case语句中的执行语句,当执行完此执行语句之后,

情况一:遇到break,则退出当前的switch-case结构;

情况二:没有遇到break。则继续执行其后的case语句,直到遇到break或者执行完所有的case及default中的语句。

注意事项

1. switch中的表达式只能是特定的数据结构:byte、short、char、inf、枚举以及String。

2. case之后跟的都是常量,使用表达式与这些常量做是否相等的判断,不能进行范围的判断。

if-else与switch-case

两者的转换

1. 开发中凡是可以用到switch-case的地方就可以用到if-else,而可以用到if-else的地方就不一定可以用到switch-case。

2. 开发中,如果两者都可以使用且代码难度相差不大,那么建议使用switch-case,他的效率稍高于if-else。

两者的对比

1. if-else可以用于范围的判断,也可以用于等职的判断,使用范围更广;switch-case语句的条件是一个变量值,只能判断变量的值是否等于case中的一个常量值,使用场景狭窄。

2. 当两者都可以使用时,推荐使用switch-case,他的效率稍高于if-else。

3. switch-case具有穿透性,可以同时执行多个分支;if-else则不具有穿透性。

循环结构

定义

根据条件,重复性的执行某段代码。

有for、while以及do-while三种循环语句。

补充:在JDK5.0之后补充了foreach循环,方便去遍历集合、数组元素等。

循环结构四要素:初始化部分、循环条件部分、循环体部分以及迭代部分。

for

for(初始化部分; 循环条件部分; 迭代部分) {

        循环体部分;

}

 执行顺序:当开始执行for循环时,首先执行的是初始化部分,然后就是循环条件部分,判断条件是否符合,如果符合那么就继续执行,反之就退出循环,当条件符合时,会执行循环体部分,再执行迭代部分,然后又是循环条件部分,循环体部分,迭代部分进行循环。

值得注意的是:初始化部分只执行一次,不会和其他部分一样执行多次。

while

初始化部分;

while(循环条件部分) {

        循环体部分;

        迭代部分;

}

执行顺序:和for的执行顺序相同,都是初始化、循环条件、循环体、迭代、循环条件、循环体、迭代.   .   .   .   .   . 

值得注意的是:初始化只执行一次;并且由于循环体和迭代都是放在大括号之中,因此先后并没有那么严格的要求,可以看代码的书写顺序而制定。

do-while

初始化部分;

do {

        循环体部分;

        迭代部分;

} while(循环条件部分);

执行顺序:do-while先执行初始化部分,然后直接执行一次循环体部分以及迭代部分,执行完之后再去判断是否满足条件,如果满足条件就继续执行,反之就退出循环。

while和for循环都是初始化之后先判断是否满足条件再决定是否执行循环体,而do-while则是不管三七二十一先执行一次循环体再判断是否满足条件。

三者区别

for和while执行的顺序相同,都是初始化、循环条件、循环体、迭代。

do-while则是初始化、循环体、迭代、循环条件。

break、continue

对于break而言,一旦执行,就跳出当前循环结构;

对于continue而言,一旦执行,就跳出本次循环,进行下一次循环。

  • 29
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王彬泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值