最新Java基础系列课程--Day03-Java程序流程控制(二)

简介: 最新Java基础系列课程--Day03-Java程序流程控制

最新Java基础系列课程--Day03-Java程序流程控制(一)https://developer.aliyun.com/article/1423480


2. if 、switch如何选择

学习完switch 分支之后,有同学可能会想,已经了有if分支,为什么还有switch分支呢?感觉上面的案例用if分支也能做啊? 那我们在具体应用场景下如何选择呢?

如果单从功能上来讲,if 分支 的功能是更加强大的,switch分支能做的事情if 分支都能做。但是具体用哪一种分支形式,也是有一些使用原则的

- 如果是对一个范围进行判断,建议使用if分支结构
- 如果是与一个一个的值比较的时候,建议使用switch分支结构

2.3 switch 注意事项

各位同学,接下来我们学习swtich的注意事项。同学们掌握这些注意事项之后,就可以避免入坑了,也可以应对一些面试笔试题。

- 1.表达式类型只能是byte、short、int、char
  JDK5开始支持枚举,JDK7开始支持String
  不支持double、float、double
- 2.case给出的值不允许重复,且只能是字面量,不能是变量。
- 3.正常使用switch的时候,不要忘记写break,否则会出现穿透现象。

1. 演示switch语句匹配的数据类型

各位同学,如果下图所示,可以自己分别用变量a、b放在switch语句中匹配试一试,如果遇到不支持的写法,IDEA会报错的。

2. 演示case后面的值,只能是字面量不能是变量

各位同学,也可以自己试试,下图箭头指向的位置只能写字面量,不能写变量

3. 演示case穿透现象

当switch语句中没有遇到break,就会直接穿透到下一个case语句执行,直到遇到break为止。

这种语法设计也是有它的用处的,当多个case语句想要执行同一段代码时,可以利用case穿透现象,提高代码复用性。

比如:我们下面程序中,想要让周二、周三、周四,都请大牛程序员来写代码。

三、循环结构

各位同学,接下来我们学习循环结构。循环结构可以控制一段代码重复执行。循环结构有for循环、while循环、do-while循环。

3.1 for循环——格式和流程

这里首先来学习for循环,同学们重点掌握for循环的书写格式,并理解for循环的执行流程。

1. for循环的格式和流程

为了让大家更直观的理解for循环的执行流程,我们直接来看具体的案例代码。

比如:我们想要在控制台打印输出3个HelloWorld

//需求:打印3行Hello World
for(int i = 0; i < 3; i++) {
    System.out.println("Hello World");
}

如下图所示,是按照下面的① ② ③ ④, ② ③ ④… 的顺序来执行的;

当②条件为true时,再依次执行③④代码,然后回到②继续判断

当②条件为false时,就结束循环

具体执行的每一步可以看下面的图解

通过上面的案例演示,最后我们再总结一下for循环的格式

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

2. for循环有哪些应用场景

通过上面的学习,我们已经知道了for循环怎么编写,并且也知道了它的执行流程。

那么具体在哪些实际场景下使用呢?其实只要是重复做的事情,都可以用循环语句来做

比如:在京东的网页上展示100台手机信息,我们只需要把展示数据的代码写一份,重复执行就可以了。

3.2 for循环案例1——求和

学完for循环的格式和流程之后,我们再通过案例来巩固一下。通过这个案例,主要是让同学们掌握一种使用程序来求和的思想。

//1.掌握使用for循环批量产生数据。
for (int i = 1; i <= 100; i++) {
    System.out.println(i);
}
求和的思路分析:
  1)首先需要定义一个求和变量,一般命名为sum
  2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
  3)让需要求和的数据和sum累加,
  结果:所有数据累加完之后最终sum就是所有数据的和
//2.需求:求1~100中所有整数的和
int sum = 0;
//定义一个循环,先产生1-100,这100个数
for (int i = 1; i <= 100; i++) {
    //每产生一个数据,就把这个数和sum累加
    sum += i; //sum = sum  + i;
}
System.out.println("1-100的数据和:" +  sum);

分析上面代码的执行过程:

i=1时:sum=0+1; sum=1;
i=2时:sum=1+2; sum=3;
i=3时:sum=3+3; sum=6;
i=4时:sum=6+4; sum=10;
...
i=100时: sum+=99; sum=5050

3.2 for循环案例2——求奇数和

需求:求1~100之间奇数的和

1. 代码写法一

求奇数和的思路(只是求和的数据变成了奇数,思路和前面没有变化)
  1)首先需要定义一个求和变量,这里命名为sum1
  2)再遍历得到所有需要求和的数据(1~100之间的所有奇数)
  3)让需要求和的数据和sum1累加,
  结果:所有数据累加完之后最终sum1就是所有数据的和
//1)定义一个变量用于求和
int sum1 = 0;
//2)定义一个循环产生1-100之间的奇数
for (int i = 1; i < 100; i+=2) {
    // i = 1 3 5 7 ...
    //3)让需要求和的数据和sum1累加,
    sum1 += i;
}
System.out.println("1-100之间的奇数和:" +  sum1);

以上代码的执行流程分析

初始化sum1=0;
当i=1时:sum1+=1; sum1=1;
当i=3时:sum1+=3; sum1=4;
当i=5时:sum1+=5; sum1=9;
...
当i=99时:sum1+=99; sum1=2500

2. 代码写法二

求奇数和的思路(只是求和的数据变成了奇数,思路和前面没有变化)
  1)首先需要定义一个求和变量,这里命名为sum2
  2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
  3)在求和之前先对数据判断,如果是奇数,才和sum1累加;否则什么也不干
  结果:所有数据累加完之后最终sum1就是所有数据的和
//1)首先需要定义一个求和变量,这里命名为sum2
int sum2 = 0; 
//2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
for (int i = 1; i <= 100; i++) {
    //i = 1 2 3 4 5 6 ... 99 100
    //3)在求和之前先对数据判断,如果是奇数,才和sum1累加;否则什么也不干
    if(i % 2 == 1){
        // i = 1 3 5 7 9 ... 99
        sum2 += i;
    }
}
System.out.println("1-100之间的奇数和:" + sum2);

for循环小结

今天关于for循环,我们学习这几个案例就够了,重点还是掌握for循环的执行流程。在以后,我们还会经常用到for循环,用多了,你就会越来越熟悉了。但是在具体场景下,还是需要具体问题具体分析。


3.3 while循环——格式和流程

各位同学,接下来我们学习第二种循环结构——while循环。

我们先来认识一下while循环长什么样子,然后按照格式写一个while循环的基础案例

// 需求:打印5行Hello World
int i = 0;
while (i < 5) {
    // i = 0 1 2 3 4
    System.out.println("Hello World");
    i++;
}

代码的执行流程如下图所示:按照① ②③④ ②③④ … 的流程执行

如果②步骤为true,才循环执行③④步骤

如果②步骤为false,则循环结束

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIeyLddg-1689742908661)(assets/1661141996444.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OUo0Dqzv-1689742908662)(assets/1661141867092.png)]

for、while如何选择

学到这里,细心的同学可能会发现while循环和for循环的执行流程是一样的。那他们是不是可以通用呢?

  • 从功能来说:能够用for循环做的,都能用while循环做。
  • 使用规范上来说:知道循环几次,建议使用for;不知道循环几次建议使用while

3.4 while循环案例——折纸案例

各位同学,上一节我们已经学习了while循环的基本使用。下面我们通过一个案例再将while循环的使用巩固一下,主要目的还是想让大家知道什么使用while循环来完成需求。

案例需求如下:

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

我们来分析一下该怎么做

分析:首先由于不知道折叠多少次,我们可以选择用while循环
  1)纸张的初始化厚度为0.1毫米,珠峰的高度为8848860毫米
    double peakHeight = 8848860;
    double paperThickness = 0.1;
  2)每次折叠纸张的厚度为原来的两倍,这是需要循环执行的
    while(纸张厚度<8848860){
      纸张厚度*=2;
    }
  3)需要求折叠的次数,可以用一个变量来记录折叠的次数
    int 次数 = 0;
    while(纸张厚度<8848860){
      纸张厚度*=2;
            次数++; //每次折叠次数累加
    }
  结果:等循环结束之后,打印记录次数的值,就是折叠多少次了。

按照上面分析的思路把代码写出来

// 1、定义变量记住珠穆朗玛峰的高度和纸张的高度。
double peakHeight = 8848860;
double paperThickness = 0.1;
// 3、定义一个变量count用于记住纸张折叠了多少次
int count = 0;
// 2、定义while循环控制纸张开始折叠
while (paperThickness < peakHeight) {
    // 把纸张进行折叠,把纸张的厚度变成原来的2倍。
    paperThickness = paperThickness * 2;
    count++;
}
System.out.println("需要折叠多少次:" + count);
System.out.println("最终纸张的厚度是:" + paperThickness);

3.5 do-while循环——格式和流程

各位同学,接下来我们学习循环结构的第三种格式——do-while循环。

们先来认识一下while循环长什么样子,然后按照格式写一个while循环的基础案例。

如下图所示:do-while循环的执行流程,是按照① ②③④ ②③④… 的顺序执行的。

我们会发现,do-while循环的特点是先执行,再判断的。即使条件不成立,也会先执行一次。


最新Java基础系列课程--Day03-Java程序流程控制(三)https://developer.aliyun.com/article/1423482

相关文章
|
26天前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
354 1
|
1月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
137 7
|
1月前
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
271 0
|
3月前
|
自然语言处理 前端开发 Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
358 5
|
1月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
277 63
|
1月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
123 3
|
6月前
|
Java 开发者
重学Java基础篇—Java类加载顺序深度解析
本文全面解析Java类的生命周期与加载顺序,涵盖从加载到卸载的七个阶段,并深入探讨初始化阶段的执行规则。通过单类、继承体系的实例分析,明确静态与实例初始化的顺序。同时,列举六种触发初始化的场景及特殊场景处理(如接口初始化)。提供类加载完整流程图与记忆口诀,助于理解复杂初始化逻辑。此外,针对空指针异常等问题提出排查方案,并给出最佳实践建议,帮助开发者优化程序设计、定位BUG及理解框架机制。最后扩展讲解类加载器层次与双亲委派机制,为深入研究奠定基础。
223 0
|
2月前
|
人工智能 Cloud Native Java
Java 技术栈企业级应用开发全流程
本指南通过构建企业级电商系统,全面解析现代化Java技术栈实战应用。涵盖Spring Boot 3、微服务架构、云原生部署、服务治理、监控可观测性及AI集成,助开发者掌握全流程开发技能,打造高效可扩展的企业级应用。
180 0
Java 技术栈企业级应用开发全流程
|
1月前
|
Java 编译器
Java 17 Switch表达式:更简洁、更强大的流程控制
Java 17 Switch表达式:更简洁、更强大的流程控制
|
2月前
|
安全 Java 数据库
使用Java实现用户的注册和登录流程
以上提供了用户注册和登录的基本框架和必要的说明。在具体的应用场景中,可能还需结合框架特性如Spring Security等提供的高级特性来实现更为完备和安全的用户认证机制。在开发期间,务必注重代码的安全性、清晰性和可维护性,为用户资料保驾护航。
151 13

热门文章

最新文章