【Java攀登者计划】从零到Offer的成长日记(三)

写在前面:大家好!真的非常抱歉,没能兑现最初每天更新的承诺。过去两周,我一门心思扑在毕业论文和答辩上,忙得不可开交。好在现在一切都已圆满结束,从今天起,我会恢复每日更新,也恳请各位朋友监督我,谢谢大家!


目录

一、分支结构

1.if分支

1.1 if分支在Java中的三种形式

1.2 if分支案例应用

 1.3 if分支注意事项

2.Switch分支 

2.1 Switch分支格式写法

2.2 Switch分支执行流程

 2.3 Switch分支案例应用

2.4 Switch分支和if分支选择

2.5 Switch分支注意事项

二、循环结构 

1. for循环

1.1 for循环格式

1.2 for循环执行流程讲解

1.3 for循环案例

2. while 循环

2.1 while循环格式

2.2 while循环流程讲解

2.3 while循环案例

2.4 for循环和while循环的选择

3.do-while循环

3.1 do-while循环格式

3.2 do -while循环流程讲解

3.3 for循环、while循环、do -while循环总结

4.死循环

4.1 死循环的三种写法

4.2 死循环的应用

5. 循环嵌套和跳转关键字(break  continue)

5.1 循环嵌套案例

5.2 跳转关键字break continue

结束语 


程序流程控制

什么是程序流程控制?

简单来说就是控制程序的执行顺序

程序流程控制有几种形式?

共有三种,分别是顺序结构、分支结构、循环结构

顺序结构:不加任何控制,从main方法开始自上而下的执行代码

分支结构:根据条件判断true 或 false,选择对应代码执行[if switch]

循环结构:控制某段代码重复执行[for while do-while]

一、分支结构

1.if分支

根据条件判断得到 true 或 false,然后来决定执行哪段代码

1.1 if分支在Java中的三种形式

第一种:

if(条件表达式){
    执行代码;
}

说明:如果条件结果为true,就执行代码;如果条件结果位false,就跳出当前分支,执行其他代码

执行流程图:

第二种:

if(条件表达式){
    执行代码1;
}else{
    执行代码2;
}

说明:如果判断条件结果为true,就执行代码1;如果结果为false,就执行else代码2,最后跳出分支,继续执行其他代码

执行流程图:

第三种:

if(条件表达式1){
    执行代码1;
}else if(条件表达式2){
    执行代码2;
}else if(条件表达式3){
    执行代码3;
}...else{
    执行代码n;
}

说明:如果条件表达式1结果为true,就执行代码1,如果为false,就往下执行条件表达式2……如果一直是false,那么就执行else里的代码n;最后跳出分支执行其他代码

执行流程图:

1.2 if分支案例应用

第一种:

package com.zhenkai.branch.ifexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class IfExplainOne {
    public static void main(String[] args) {
        /*目标:掌握if分支第一种形式的写法*/
        //案例需求:评测气温,如果超过30度,就发出中暑预警提示
        double currentTemperature = 36;
        if (currentTemperature >= 30){
            System.out.println("天气炎热,注意防暑降温,当心中暑");
        }
    }
}

第二种:

package com.zhenkai.branch.ifexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class IfExplainTwo {
    public static void main(String[] args) {
        /*目标:掌握if分支第二种写法*/
        //案例需求:如果成绩大于60分就通过这么考试,拿到这么课程学分
        double score = 59.9;
        if (score >= 60){
            System.out.println("恭喜您通过考试,成绩及格,得到该课程学分!");
        }else {
            System.out.println("很抱歉,您的分数不及格,请留意下学期补考时间,假期好好复习!");
        }
    }
}

第三种:

package com.zhenkai.branch.ifexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class IfExplainThree {
    public static void main(String[] args) {
        /*目标:掌握if分支第三种写法*/
        //学校根据分数评优,0~60 D;60~70 C;70~90 B;90~100 A
        double score = -85;
        if (score >= 0 && score < 60){
            System.out.println("D");
        }else if (score >= 60 && score < 70){
            System.out.println("C");
        }else if (score >= 70 && score < 90){
            System.out.println("B");
        }else if (score >= 90 && score <= 100){
            System.out.println("A");
        }else {
            System.out.println("您输入的分数有误,只能是0 ~ 100之间,请确认!");
        }
    }
}

 1.3 if分支注意事项

1.if()后一定不能加;

2.if(){}里如果只有一行代码,{}可以省略,但是建议写上

2.Switch分支 

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

2.1 Switch分支格式写法

Switch(表达式){
    case 值1:
        执行代码;
        break;
    case 值2:
        执行代码;
        break;
    ...
    case 值n:
        执行代码;
        break;
    default:
        执行代码;
}

2.2 Switch分支执行流程

第一步:先执行表达式的值,再拿这个值与分支里case值进行匹配

第二步:与哪个分支的case值匹配成功,就执行哪个case块的代码,遇到break就跳出分支

第三步:如果全部case值都匹配结果位false,则执行defaule块的代码

 2.3 Switch分支案例应用

package com.zhenkai.branch.switchexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class SwitchExplain {
    public static void main(String[] args) {
        /*目标:掌握Switch分支的执行流程*/
        //案例需求:定义一个初始值,周一到周日,周一加10,周二加20……
        int initialValue = 0;
        String dayOfWeek = "星期天";
        switch (dayOfWeek) {
            case "星期一":
                initialValue += 10;
                System.out.println(initialValue);
                break;
            case "星期二":
                initialValue += 20;
                System.out.println(initialValue);
                break;
            case "星期三":
                initialValue += 30;
                System.out.println(initialValue);
                break;
            case "星期四":
                initialValue += 40;
                System.out.println(initialValue);
                break;
            case "星期五":
                initialValue += 50;
                System.out.println(initialValue);
                break;
            case "星期六":
                initialValue += 60;
                System.out.println(initialValue);
                break;
            case "星期天":
                initialValue += 70;
                System.out.println(initialValue);
                break;
            default:
                System.out.println("没有找到对应case值,请您检查是否输入有误!");
        }

    }
}

2.4 Switch分支和if分支选择

从功能上来讲,if的功能要远强于Switch,Switch可以做的if都能做,但是要根据不同情况选择对应的分支

当条件是一个一个的值做比较时,使用Switch分支更好

当条件是一个区间范围时,应使用if分支

2.5 Switch分支注意事项

1.表达式只支持byte、short、int、char、String、枚举,不支持double、float、long

2..case值不允许重复,且只能是字面量,不能是变量

3.正常使用Switch时,必须书写break,否则会出现穿透现象

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

穿透现象示例:

package com.zhenkai.branch.switchexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class SwitchExplainTwo {
    public static void main(String[] args) {
        /*目标:掌握Switch分支穿透现象*/
        //案例需求:周一到周日,周一学Java,周二周三敲代码,周四刷算法题,周五学Java,周六周日总结笔记
        String dayOfWeek = "星期二";
        switch (dayOfWeek) {
            case "星期一", "星期五":
                System.out.println("学Java");
                break;
            case "星期二":
                //匹配到星期二,没有遇到break,继续向下穿透
            case "星期三":
                System.out.println("敲代码");
                break;
                //遇到break,Switch语句结束
            case "星期四":
                System.out.println("刷算法题");
                break;
            case "星期六":
                break;
            case "星期天":
                System.out.println("总结");
                break;
            default:
                System.out.println("没有找到对应case值,请您检查是否输入有误!");
        }

    }
}

二、循环结构 

1. for循环

1.1 for循环格式

for(初始化语句;循环条件;迭代语句){
    循环体语句(需要重复执行的代码);
}

执行流程图:

1.2 for循环执行流程讲解

package com.zhenkai.branch.forexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class ForExplain {
    public static void main(String[] args) {
        /*目标:掌握for循环的用法和执行流程讲解*/
        //案例需求:打印5行HelloWorld
        for (int i = 0; i < 5; i++) {
            //初始化语句:int i = 0  循环条件:i < 5  迭代条件:i++
            System.out.println("Hello World!");
            /*执行流程:
            * stop1:i取值0  1  2  3  4
            * stop2:判断当前i的值是否满足循环条件,如果是true,执行System.out.println("Hello World!");
            * stop3:执行迭代语句i++,i加1,再次返回stop1,直到不满足循环条件,结束循环*/
            
        }
    }
}

总结:

初始化语句:一般是定义一个变量,并给初始值
循环条件:一般是一个关系表达式,结果必须是true或者false
迭代语句:用于对条件进行控制,一般是自增或者自减
循环语句体:需要重复执行的代码

for循环作用:减少代码重复编写,能灵活的控制程序的执行

快捷方式:在IDEA中,可以直接输入fori,按住Enter键

1.3 for循环案例

案例一:求1 ~ 100的和

package com.zhenkai.loop.forexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class ForDemoOne {
    public static void main(String[] args) {
       //案例:求1~100之间的和
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println("1到100的和是:" + sum);
    }
}

案例二:求1~100之间的偶数和

package com.zhenkai.loop.forexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class ForDemoTwo {
    public static void main(String[] args) {
        //案例需求:求1~100之间的偶数和
        int sum = 0;
        //方法一
        for (int i = 0; i <= 100; i += 2) {
            sum += i;
        }
        System.out.println("1到100之间的偶数和是:" + sum);
        /*方法二
        * for(int i = 1;i <= 100;i++){
        *   if(i % 2 == 0){
        *       sum += i;
        *   }
        * }
        System.out.println("1到100之间的偶数和是:" + sum);
        */
    }
}

2. while 循环

2.1 while循环格式

初始化语句;
while(循环条件){
    循环体语句(需要重复执行的代码);
    迭代语句;
}

2.2 while循环流程讲解

package com.zhenkai.loop.whileexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class WhileExplain {
    public static void main(String[] args) {
        /*目标:掌握while循环的执行流程*/
        //同样以打印5行Hello World举例
        int i = 1;
        //初始化语句
        while (i <= 5){
            //循环条件
            System.out.println("Hello World!");
            //循环体语句
            i++;
            //迭代语句
            /*执行流程讲解:
            * stop1:i取到初始化值1
            * stop2:进入循环条件进行判断,如果为true,就执行循环体语句
            * stop3:接着继续执行迭代语句,实现i加1,再次返回stop2,直到不满足循环条件,结束循环*/
        }
    }
}

2.3 while循环案例

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

package com.zhenkai.loop.whileexplain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class WhileDemoOne {
    public static void main(String[] args) {
        //需求:世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的它的厚度是0.1毫米。
        //请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?
        /*think:stop1 定义纸张厚度和山峰高度(double类型),定义int类型次数 注意要统一单位
        *       stop2 使用while循环,循环条件是纸张厚度 < 山峰高度 循环体语句是纸张厚度每次乘2,迭代语句是次数++
        *       stop3 结束循环,输出结果*/
        int count = 0;
        double paperThickness = 0.1,mountainHeight = 8848860;
        while (paperThickness < mountainHeight){
            paperThickness *= 2;
            count++;
        }
        System.out.println("最终的纸张厚度是:" + paperThickness + "毫米");
        System.out.println("共计折叠" + count + "次");
    }
}

2.4 for循环和while循环的选择

for循环和while循环有什么区别?在什么情况使用for或while?

for循环和while循环从功能上来讲完全一样。

在知道循环次数时,用for循环;在不知道循环此时时,用while循环

3.do-while循环

3.1 do-while循环格式

初始化语句;
do{
    循环体语句;
    迭代语句;
}while(循环条件);

执行流程图:

do -while 的特点:先执行后判断

3.2 do -while循环流程讲解

package com.zhenkai.loop.dowhile_explain;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class DoWhileExplain {
    public static void main(String[] args) {
        /*目标:掌握do -while的执行流程和特点*/
        //案例:同样以打印5行Hello World为例
        int i = 1;
        //初始化语句
        do {
            System.out.println("Hello World!");
            //循环体语句
            i++;
            //迭代语句
        }while (i <= 5);
        //判断条件
        /*执行流程讲解:
        * stop1:初始化语句 i取值1
        * stop2:开始执行循环体语句
        * stop3:接着继续执行迭代语句,i自身加1得到新值
        * stop4:接下来执行判断条件,如果是true,就返回stop2,直到不满足循环条件,结束循环*/
    }
}

3.3 for循环、while循环、do -while循环总结

for循环、while循环都是先判断后执行;do -while循环是先执行后判断

for循环中控制循环的变量只在循环中使用

while循环中,控制循环的变量在循环后还可以继续使用

4.死循环

死循环是可一直执行下去的循环,没有干预不会停止

4.1 死循环的三种写法

//for 死循环
for(;;){
    循环体语句;
}
// while 死循环
while(){
    循环体语句;
}
//do -while 死循环
do{
    循环体语句;
}while(true);

最推荐whil死循环的写法

4.2 死循环的应用

常见的用于服务器程序

5. 循环嵌套和跳转关键字(break  continue)

什么是循环嵌套?

就是循环中包含循环

5.1 循环嵌套案例

案例一:打印5行4列 *

package com.zhenkai.loop.nested;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class LoopNestedDemo {
    public static void main(String[] args) {
        /*目标:掌握循环嵌套*/
        //案例:打印5行4列 *
        for (int i = 1; i <= 5; i++) {
            //创建外部循环,用来控制打印行数
            for (int j = 1; j <= 4; j++) {
                //创建内部循环,用来控制打印列数
                System.out.print(" * ");
            }
            System.out.println();
            //内部循环执行完一次,控制换行
        }
    }
}

5.2 跳转关键字break continue

break:跳出并结束当前行所在循环,就是直接结束本轮循环,只用于结束循环或结束Switch分支的执行

案例:打印5行Hello World为例,在打印到第3行的时候结束循环

package com.zhenkai.loop.nested;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class LoopNestedBreakDemo {
    public static void main(String[] args) {
        /*目标:掌握break在循环中的使用*/
        //案例:同样以打印5行Hello World为例,在打印到第3行的时候结束循环
        for (int i = 1; i <= 5; i++) {
            System.out.println("Hello World" + i);
            if (i == 3){
                break;
            }
        }
    }
}

continue:跳出当前循环的当次执行,直接进入下一次执行,就是结束一次循环,进入下一轮循环,只能在循环中使用

案例:打印5行Hello World为例,在打印到第3行的时候结束当次循环,但是除过第三个,其他任需打印

package com.zhenkai.loop.nested;

/**
 * @author ZhenKai
 * @version 1.0.0
 * @since 2025-04-03
 */
public class LoopNestedContinueDemo {
    public static void main(String[] args) {
        /*目标:掌握continue在循环中的应用*/
        //案例:打印5行Hello World为例,在打印到第3行的时候结束当次循环,但是除过第三个,其他任需打印
        for (int i = 1; i <= 5; i++) {
            if (i == 3){
                continue;
            }
            System.out.println("Hello World" + i);
        }
    }
}


结束语 

今天的内容总结完毕,很多代码可能注释看不清,我会将所有的代码、图片、流程图、思维导图都上传,有需要的伙伴可以自行下载。另为如果你在浏览过程中如果发现错误,包括错别字、错误代码等都可以评论或私信我,我将及时改正,并非常感谢你的指正。如果有什么不太懂的地方,都可以私信我,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值