Java程序流程控制

Java程序流程控制(板块持续更新)

程序中最经典的三种执行顺序:顺序结构、分支结构(if、switch)、循环结构(for、while、do-while)

顺序结构:自上而下的执行代码;

分支结构:根据条件,选择对应代码执行;

循环结构:控制某段代码重复执行。

一、分支结构
1、if分支

有三种形式:

if(条件表达式){
    代码;
        }
if(条件表达式){
    代码1;
        }else{
    代码2;
        }
if(条件表达式){
    代码1;
        }else if(条件表达式2){
    代码2;
        }else if(条件表达式3){
    代码3;
        }
        ...
    else{
        代码n;
        }
2、Switch分支

是通过比较值来决定执行哪条分支。

switch(表达式){
        case1:
            执行代码...;
            break;
        case2:
            执行代码...;
            break;
        ...
        case 值n-1:
            执行代码...;
            break;
        default:
            执行代码n;
        }

①先执行表达式的值,再拿着这个值去与case后的值进行匹配;

②与哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支;

③如果全部case后的值与之匹配都是false,则执行default块的代码。

if其实在功能上远远强大于switch

if适合做条件是区间判断的情况

switch适合做条件是比较值的情况,代码优雅,性能较好

switch的注意事项:

①表达式的类型只能是byte\short\int\char\String(jdk7之后),不支持double\float\long

②case给出的值不允许重复,且只能是字面量,不能是变量

③正常使用switch的时候,不要忘记写break,否则会出现穿透现象

穿透现象:

在这里插入图片描述

当存在多个case分支的代码相同时,可以把相同的代码放在一个case块中,其他的case块都通过穿透性穿透到该case块执行代码即可,这样可以简化代码。

二、循环结构
1、for
public class ForDemo {
    public static void main(String[] args) {
        for(int i=0; i<5; i++){
            System.out.println("打印测试---------test--------");
        }
    }
}
for(初始化语句;循环条件;迭代语句){
    循环体语句(重复执行的代码);
        }

for循环的常见应用场景:减少代码的重复编写,灵活的控制程序的执行

2、while
while(循环条件){
    循环体语句(被重复执行的代码);
    迭代语句;
} 

此处的循环条件指在该条件下可以执行循环体中的语句

while和for功能上完全一样,for能解决的问题while也能解决,反之亦然

使用规范:知道循环几次:使用for;不知道循环几次建议使用:while

案例:纸张叠成珠穆朗玛峰的高度

public class QomolangmaDemo {
    public static void main(String[] args) {
/*世界上最高山峰珠穆朗玛峰高度是:8848.86米==8848860mm,加入我有一张足够大的纸,它的厚度是0.1mm。
请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?*/
//        一开始不知道循环多少次使用while
        double PaperHeight = 0.1;
        int sum = 0;
        double QomulangmaHeight = 8848860;
        while(PaperHeight < QomulangmaHeight){
            PaperHeight = PaperHeight*2;
            sum++;
        }
        System.out.println("需要折叠:"+sum+"次");
        System.out.println("最终纸张厚度为:"+PaperHeight);
    }
}
3、do-while
do {
    循环体语句;
    迭代语句;
}while(循环条件)

特点:先执行,后判断。一进来就能执行一次循环体语句

应用场景举例:抢票软件,先执行刷票操作,再判断有没有抢到

4、三种循环的区别

for、while都是先判断后执行 do while是先执行后判断

for循环和while循环的执行流程是一模一样的,功能上无差别,使用规范上有差别

使用规范:知道循环次数时用for,不知道循环次数时用while

其他区别:for循环中,控制循环的变量只在循环中使用。while循环中,控制循环的变量在循环后还可以使用。

4、死循环

可以一直执行下去的一种循环,如果没有干预不会停下来

public class DeadloopDemo {
    public static void main(String[] args) {
//        死循环的写法
        for(;;){
            System.out.println("Hello World!");
        }
        while(true){
            System.out.println("Hello world!");
        }
        do{
            System.out.println("Hello world");
        }while(true);
    }
}
5、循环嵌套

循环中又包含循环(套娃)

循环嵌套的特点:外部循环每执行一次,内部循环会全部执行完一轮

public class LoopNestedDemo {
    public static void main(String[] args) {
//        打印三行四列星星
        for(int i = 0;i<3;i++){
            for(int j = 0;j<4;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
三、跳转关键字
1、break

跳出并结束当前所在循环的执行

只能用于结束所在循环,或者结束所在switch分支的执行

2、continue

用于跳出当前循环的当次执行,直接进入循环的下一次执行

只能在循环中进行使用

public class BreakAndContinue {
    public static void main(String[] args) {
//        场景:假如你有老婆了,你犯错了,你老婆罚你连着5天每天说2句我爱你
//        说到第三天的时候不用说了
        for(int i=1;i<=5;i++){
            if (i==3){
                break;
            }
            for(int j=1;j<=2;j++){
                System.out.println("我爱你"+i);
            }
        }

//       场景:只有第三天不用说
        for(int i=1;i<=5;i++){
            if (i==3){
                continue;
            }
            for(int j=1;j<=2;j++){
                System.out.println("我爱你"+i);
            }
        }
    }
}
3、案例:Random的使用

在这里插入图片描述
在这里插入图片描述

public class RandomDemo {
    public static void main(String[] args) {
//创建一个Random对象,用于生成随机数
        Random r = new Random();
//调用Random提供的功能,nextInt得到随机数
        for (int i=0;i<5;i++) {
            int  data = r.nextInt(10); //0-9
            System.out.println(data);
        }



//        减加法生产指定区间的随机数
        System.out.println("--------------------");
        for (int i=0;i<5;i++) {
            int  data2 = r.nextInt(10)+1; //0-10
            System.out.println(data2);
        }
        System.out.println("--------------------");
        for (int i=0;i<5;i++) {
            int  data3 = r.nextInt(15)+3; //3-17
            System.out.println(data3);
        }

    }
int  data2 = r.nextInt(10)+1; //0-10
            System.out.println(data2);
        }
        System.out.println("--------------------");
        for (int i=0;i<5;i++) {
            int  data3 = r.nextInt(15)+3; //3-17
            System.out.println(data3);
        }

    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值