Java基础学习day03

简介: 本节讲解Java流程控制,涵盖分支结构(if、switch)与循环结构(for、while、do-while),介绍其语法、执行流程及应用场景,并解析break、continue用法与循环嵌套,助力掌握程序逻辑控制核心。

Java基础学习day03

程序流程控制

分支结构

1.if

  • 根据条件的真或假,来决定执行某段代码。
  • 三种不同的形式
  • if (条件表达式) {代码块;}
  • 执行流程
  • 首先判断条件表达式的结果,如果为true执行语句体,为 false 就不执行语句体。
  • if (条件表达式) {代码块1;} else {代码块2}
  • 执行流程
  • 首先判断条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。
  • if (条件表达式1) {代码块1} else if (条件表达式2) {代码块2} ... else {代码块n}
  • 执行流程
  • 先判断条件1的值,如果为true则执行语句体1,分支结束;
  • 如果为false则判断条件2的值 如果值为true就执行语句体2,分支结束;
  • 如果为false则判断条件3的值 ...
  • 如果没有任何条件为true,就执行else分支的语句体n+1。
  • 案例:
public class IfDemo1 {

    public static void main(String[] args) {
        test1();
        test2();
        test3();
    }

    public static void test1() {
        // xx去网吧上网,但是网吧有规定,只有>=18  才能上网
        int age = 18;
        if (age >= 18) {
            System.out.println("可以上网");
        }
        System.out.println("玩泥巴去吧");
    }

    public static void test2() {
        int money = 5;
        if (money >= 10) {
            System.out.println("付款成功");
        } else {
            System.out.println("余额不足");
        }
    }


    /*
        写一个方法,从控制台输入一个分数,分数高于90为优秀,分数在80-90为良好,分数在70-80为优良,分数在60-70为及格,分数低于60为不及格
     */
    public static void test3() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个分数:");
        int score = sc.nextInt();
        if (score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 70) {
            System.out.println("优良");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
    }
}

2.switch

  • 是通过比较值是否相等,来决定执行哪条分支。
  • 执行流程
  • 先执行表达式的值,再拿着这个值去与case后的值进行匹配。
  • 与哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。
  • 如果全部case后的值与之匹配都是false,则执行default块的代码。
  • 注意事项
  • 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long
  • case给出的值不允许重复,且只能是字面量,不能是变量。
  • 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
  • 穿透现象的利用:
  • 存在多个case分支的代码是一样时,可以把代码写到一个case块,其他case块通过穿透性能,穿透到该case块即可,这样可以简化代码。
  • 案例:
public class SwitchTest1 {
    public static void main(String[] args) {
        test();
    }

    public static void test() {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入你的性别:");
        String sex = sc.next();
        switch (sex) {
            case "男":
                System.out.println("《重生之我在提瓦特当雷神》");
                break;
            case "女":
                System.out.println("《重生之我的狐仙宫司大人》");
                break;
            default:
                System.out.println("《重生之我的性别是沃尔玛购物车》");
                break;
        }

    }
}

3.if与switch的区别与应用场景

  • if在功能上远远强大于switch。
  • 当前条件是区间的时候,建议使用if分支结构来实现。
  • 当条件是与一个一个的值比较的时候,建议用switch更合适(格式良好,性能较好,代码优雅)。

循环结构

1.for

  • 控制一段代码反复执行很多次。
  • 格式:
  • for (初始化语句; 循环条件; 迭代语句) {  循环体语句(重复执行的代码); }
  • 执行流程(参照案例1代码):
  • 循环一开始,执行int i = 0 一次。
  • 此时  i=0 ,接着计算机执行循环条件语句:0 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时  i=1 ,接着计算机执行循环条件语句:1 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时  i=2 ,接着计算机执行循环条件语句:2 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时  i=3 ,然后判断循环条件:3 < 3 返回false, 循环立即结束。
  • 案例1:
// 输出3次HelloWorld
for (int i = 0; i < 3; i++) {
    System.out.println("Hello World");
}
  • 案例2:
public class ForDemo1 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i < 6; i++) {
            sum = sum + i;
        }
        System.out.println(sum);
    }
}

2.while

  • 格式:
  • 初始化语句;   while (循环条件) {     循环体语句(被重复执行的代码);     迭代语句; }
  • 执行流程(参照案例1代码)
  • 循环一开始,执行int i = 0 一次。
  • 此时  i=0 ,接着计算机执行循环条件语句:0 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时  i=1 ,接着计算机执行循环条件语句:1 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时  i=2 ,接着计算机执行循环条件语句:2 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时  i=3 ,然后判断循环条件:3 < 3 返回false, 循环立即结束。
  • 案例1:
int i = 0;
while (i < 3) {
    System.out.println("Hello World");
    i++;
}
  • 案例2:
public class WhileTest2 {
    public static void main(String[] args) {

        //需求:假设你在银行投资了100000元,银行给出的复利是1.7%,问多少年后能实现本金翻倍?
        double money = 100000;
        double rate = 0.017;
        double target = money * 2;
        int year = 0;
        while (money < target) {
            money = money + (money * rate);
            year++;
        }
        System.out.println(year);
    }
}

3.for与while的区别与应用场景

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

4.do...while

  • 格式:
  • 初始化语句; do {     循环体语句;     迭代语句; } while (循环条件);
  • 特点:
  • 先执行,后判断。

5.三种循环小结

  • for循环 和 while循环(先判断后执行); do...while (先执行后判断)
  • for循环中,控制循环的变量只在循环中使用。while循环中,控制循环的变量在循环后还可以继续使用。

6.死循环

  • 定义:可以一直执行下去的一种循环,如果没有干预不会停下来。
  • 写法:
for ( ; ; ) {
    System.out.println("Hello World1");
}
// 经典写法
while (true) {
    System.out.println("Hello World2");
}
do {
    System.out.println("Hello World3");
} while (true);

7.循环嵌套

  • 定义:循环中又包含循环。
  • 特点:外部循环每循环一次,内部循环会全部执行完一轮。
  • 案例:
for(int i = 1; i <= 4; i++) {
     System.out.println("*****");
}

break、continue

  • 定义:
  • break   :  跳出并结束当前所在循环的执行。
  • continue:  用于跳出当前循环的当次执行,直接进入循环的下一次执行。
  • 注意事项
  • break : 只能用于结束所在循环, 或者结束所在switch分支的执行。
  • continue : 只能在循环中进行使用。


相关文章
|
13天前
|
人工智能 自然语言处理 文字识别
RAG效果不佳?先别急着微调模型,这几个关键节点才是优化重点
本文深入探讨了RAG(Retrieval Augmented Generation)技术的实现细节与优化策略,指出在AI应用开发中,RAG常被视为黑盒导致问题定位困难。文章从文档分块(Chunking)、索引增强(语义增强与反向HyDE)、编码(Embedding)、混合检索(Hybrid Search)到重排序(Re-Ranking)等关键环节进行了详细解析,强调需结合具体场景对各模块进行调优,以提升召回率与精确率的平衡,并倡导从快速使用走向深度优化的实践路径。
253 15
RAG效果不佳?先别急着微调模型,这几个关键节点才是优化重点
人工智能 关系型数据库 分布式数据库
184 18
人工智能 安全 IDE
236 28
机器学习/深度学习 人工智能 中间件
174 20
存储 人工智能 Serverless
227 33
人工智能 开发框架 自然语言处理
157 17
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
690 23
|
13天前
|
存储 人工智能 运维
AI 网关代理 RAG 检索:Dify 轻松对接外部知识库的新实践
Higress AI 网关通过提供关键桥梁作用,支持 Dify 应用便捷对接业界成熟的 RAG 引擎。通过 AI 网关将 Dify 的高效编排能力与专业 RAG 引擎的检索效能结合,企业可在保留现有 Dify 应用资产的同时,有效规避其内置 RAG 的局限,显著提升知识驱动型 AI 应用的生产环境表现。
290 46
|
6天前
|
SQL 关系型数据库 MySQL
Mysql基础学习day03
本课程为MySQL基础学习第三天内容,主要讲解多表关系与多表查询。内容涵盖物理外键与逻辑外键的区别、一对多、一对一及多对多关系的实现方式,以及内连接、外连接、子查询等多表查询方法,并通过具体案例演示SQL语句的编写与应用。
|
11小时前
|
存储 Java 索引
Java基础学习day04
本节讲解Java数组基础,包括静态与动态初始化、元素访问及遍历方法,并介绍二维数组的定义与使用,帮助理解程序数据存储方式。