• 程序流程控制语句




    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
    热爱写作,愿意让自己成为更好的人…

    顺序结构

    如果你没有写其他的结构,按照代码的先后顺序,依次执行程序中大多数的代码都是这样执行的

    public class Test {
    	public static void main( String[] args) {
    		System.out.println( "A" );
    		System.out.println( "B" );
    		System.out.print1n( "C" );
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    分支结构

    if分支

    if 分支有三种格式
    根据判定的结果(真或假)决定执行某个分支的代码

    格式一:

    if(条件表达式){
    	语句体;
    }
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    执行流程:
    首先判断条件表达式的结果,如果为true执行语句体,为false就不执行语句体

    注意事项:
    if 语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。

    格式二:

    if(条件表达式){
    	语句体1;
    }else {
    	语句体2;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    执行流程:
    首先判断条件表达式的结果,如果为true执行语句体1,为false 就执行语句体2

    格式三:

    if(条件表达式1){
    	语句体1;
    }else if(条件表达式2){
    	语句体2;
    } else if(条件表达式3){
    	语句体4;
    }
    ...
    else {
    	语句体n+1;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    执行流程:
    1、先判断条件1的值,如果为true则执行语句体1,分支结束;如果为false则判断条件2的值
    2、如果值为true就执行语句体2,分支结束;;如果为false则判断条件3的值
    3…
    4、如果没有任何条件为true,就执行else分支的语句体n+1。

    switch分支

    也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好。

    switch(表达式){
    	case1:
    	执行代码...;
    	break;
    case2:
    	执行代码...;
    	break;
    ...
    case值n-1:
    	执行代码...;
    	break;
    default:
    	执行代码n;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    执行流程:
    先执行表达式的值,拿着这个值去与case后的值进行匹配。
    匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支。
    如果case后的值都不匹配则执行default代码。

    switch分支注意事项:
    表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String,不支持double、float、long。
    case给出的值不允许重复,且只能是字面量,不能是变量。
    不要忘记写break,否则会出现穿透现象。

    switch的穿透性

    如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。

    if 和 switch 的特点

    if 其实在功能上远远强大于switch。
    if 适合做区间匹配。
    switch适合做:值匹配的分支选择、代码优雅。

    循环结构

    for循环

    控制一段代码反复执行很多次。

    //格式:
    for(初始化语句;循环条件;迭代语句){
    	循环体语句(重复执行的代码);
    }
    //示例
    //输出3次HelloWorld
    for (int i = 0; i < 3; i++) {
    	System.out.println( "Hello world" );
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述
    执行的流程:
    循环一开始,执行int i= 0一次。
    然后判断循环条件:0<3返回true ,进入到循环体中执行输出: helloWorld,然后执行迭代语句i++,此时i=1了。
    然后判断循环条件:1<3返回true ,进入到循环体中执行输出:helloWorld,然后执行迭代语句i++t,此时i=2了。
    然后判断循环条件:2<3返回true ,进入到循环体中执行输出: helloWorld,然后执行迭代语句i++,此时i=3了。
    然后判断循环条件:3<3返回false,循环立即结束!!

    for循环案例一

    求和
    需求:求1-5之间的数据和,并把求和结果在控制台输出。
    分析:
    1、定义for循环,使其能够依次产生:1、2、3、4、5。

    for (int i = 1; i<= 5; i++){
    
    }
    
    • 1
    • 2
    • 3

    2、在循环外定义一个整数变量sum用于求和,循环每产生一个数,就累加到sum中去

    int sum = 0;
    //使用循环控制输出1-5
    for (int i = 1; i<= 5; i++){
    //在循环外定义变量sum累加数据
    	sum += i;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、循环结束后,输出求和变量即是结果。

    for循环案例二

    需求:求1-10之间的奇数和,并把求和结果在控制台输出。
    方式一:
    1、定义for循环,使其能够依次产生:1、2、3、4、5…10。
    2、循环每产生一个数据,都通过 if 判断其是否是奇数

    for (int i = 1; i <= 10; i++) {
    	if (i % 2 == 1) {
    		// i = 1 3 5 7...
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、在循环外定义一个整数变量sum,在 if 分支内来累加产生的奇数数据。

    方式二
    1、定义for循环,使其能够依次产生:1、3、5、7 、9(直接使用for循环找出奇数)

    for ( int i = 1; i <= 10; i+=2) {
    }
    
    • 1
    • 2

    2、在循环外定义一个整数变量sum,循环每产生一个奇数就累加到sum

    while循环

    //初始化语句;
    while(循环条件){
    	循环体语句(被重复执行的代码);
    	迭代语句;
    }
    //示例
    int i = 0;
    while (i < 3) {
    	System.out.println( "Hello world" );
    	i++;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    什么时候用for循环,什么时候用while循环?

    功能上是完全一样的,for能解决的while也能解决,反之亦然。
    使用规范是:
    知道循环几次:使用for
    不知道循环几次建议使用: while。

    while循环案例

    需求:
    世界最高山峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸,
    它的厚度是0.1毫米。
    请问,折叠多少次,可以折成珠穆朗玛峰的高度。

    思路:
    这种不清楚要循环多少次的情况可以选择用while实现

    分析步骤
    定义变量存储珠穆朗玛峰的高度、纸张的高度。

    double peakHeight = 8848860;//山峰高度
    double paperThickness = 0.1;//纸张厚度
    
    • 1
    • 2

    使用while循环,循环条件是(纸张厚度<山峰高度),内部控制纸张折叠,每折叠一次,纸张厚度为原来两倍,循环外定义计数变量,每折叠依次让该变量+1

    int count = 0;
    while (paperThickness < peakHeight){
    	paperThickness *= 2;
    	count++;
    
    • 1
    • 2
    • 3
    • 4

    do-while循环

    先执行再判断循环条件。

    //初始化语句;
    do {
    	循环体语句;
    	迭代语句;
    }while (循环条件);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    特点:一定会先执行一次循环体。

    int i = o;
    do {
    	System.out.println("Hello World! ");
    	i++;
    }while( i < 3);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    三种循环的区别

    for循环和while循环(先判断后执行)
    do…while (第一次先执行后判断)

    for 和 while 的区别:

    for循环和while循环的执行流程是一模一样的。
    如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
    for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。

    int i = 0;
    while (i < 3) {
    	System.out.println("Hello world" );
    	i++;
    }
    System.out.println(i);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    for (int i = 0; i < 3; i++ ) {
    	System.out.println("He1lo world");
    }
    System.out.println(i);
    
    • 1
    • 2
    • 3
    • 4

    死循环

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

    for(;;) {
    	System.out.print1n( "Hello world" );
    }
    //经典做法
    while(true) {
    	System.out.println( "Hello wor1d" );
    }
    do {
    	System.out.println( "Hello world" );
    } while (true);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    死循环案例

    需求:
    系统密码是520,请用户不断的输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序。
    分析:
    使用while死循环,让用户不断输入数据
    与密码比对:验证不成功输出密码错误、
    验证成功输出欢迎进入系统,并使用break结束当前循环的执行。

    循环嵌套

    循环中又包含循环

    外部循环每循环一次,内部循环全部执行完一次。

    for(int i = 0; i < 3; i++) {
    	//又循环
    	for(int j = 0; j < 5; j++) {
    		System.out.print1n(我爱你");
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    跳转关键字:break、continue

    **
    break

    跳出并结束当前所在循环的执行。
    可以用在嵌套循环中跳出整个外部循环的并立即结束它。

    continue

    用于跳出当前循环的当次执行,进入下一次循环。
    可以用在嵌套循环中跳出外部循环的当次执行,进入外部循环的下一次。

    **

  • 相关阅读:
    phar反序列化
    JVM GC算法总结
    计算机基础知识34
    TCP为什么要三次握手?
    Android开发笔记——快速入门(全局大喇叭)
    初识Canal以及使用Docker安装配置
    印度金融公司数据遭泄露,泄露数据超过3TB
    对不起了,QQ和微信,我选择用它!
    python语法糖-推导式
    Java 同步锁ReentrantLock与抽象同步队列AQS
  • 原文地址:https://blog.csdn.net/rej177/article/details/126134073