一个月学会Java 第5天 控制结构
Day5 控制结构
这么叫可能有些就算有基础的人也看不懂,其实就是if-else、switch-case、for、while、do-while这几个,没基础的听到了这个也不要慌张,这几个是程序的基础,多多训练就好
第一章 顺序结构
这章其实没有什么好讲的,其实正常看代码也看得懂的,就是代码的执行按照顺序下来
第二章 条件语句(分支)
if 语句
程序自然是有判断的对吧,所以这个if就是一个判断,如果有C语言基础的可以跳过,因为这块其实和C语言、C++、C#是一样的
if听意思也能看得出来其实就是如果的意思,语法是这样的 if (条件结果是true或者是false){}
既然是分支的话,那说明肯定是有反着的情况的,那就是 else
,接在if语句的结束后面,就是当if语句的条件为false的时候就执行else,语法也和if一样需要花括号,自然也是可以不用花括号的
public class Hello {public static void main(String[] args) {int i = 50;int j = 15;if (i == 50)System.out.println(i);if (j != 15) {System.out.println(j);} elseSystem.out.println("j == 15");}
}
上面的程序明显可以看出就只是一个判断而已,但是他是可以进行嵌套进行的,还有一点就是这个语句其实是可以不加花括号的,但是代价就是只能执行一行语句,一个语句的结束就是一个分号,所以你也可以单写一个分号就是一个语句,根据顺序结构下来,其实就是所有判断都会进入,只不过是否为true才决定是否执行
在没有花括号的情况下else会对最近的if进行关联(必须是同级的)
switch-case语句
我们先来看一个案例
public class Hello {public static void main(String[] args) {int score = 5;if (score == 1) {System.out.println("不及格");} else if (score == 2) {System.out.println("及格");} else if (score == 3) {System.out.println("中等");} else if (score == 4) {System.out.println("良好");} else if (score == 5) {System.out.println("优秀");}}
}
这样是不是太糅杂了,一般这种情况,我们都会使用switch-case去解决
public class Hello {public static void main(String[] args) {int score = 5;System.out.println("这次使用switch-case");switch (score) {case 1:System.out.println("不及格");case 2:System.out.println("及格");case 3:System.out.println("中等");case 4:System.out.println("良好");case 5:System.out.println("优秀");}}
}
是不是出来了,然后看的也比if-else疯狂嵌套要舒服,但是其实是错误的,我们来说一下是为什么,因为这里并没有进行执行完就跳出的选择,之所以只打印了一个优秀是因为我的5写在了最下面,还记得我说的顺序结构吗,这里也不例外,假如我们把score改成1会发生什么
是不是明显是有bug的,我们再来改变一下代码,我们就能准确判断了,然后是不是还有一个问题,那就是如果我的值都不是在1-5之间我想要直接打印一个,成绩无效呢?也很简单,我们慢慢道来
public class Hello {public static void main(String[] args) {int score = 1;System.out.println("这次使用switch-case");switch (score) {case 1:System.out.println("不及格");break;case 2:System.out.println("及格");break;case 3:System.out.println("中等");break;case 4:System.out.println("良好");break;case 5:System.out.println("优秀");break;}}
}
这次是不是就没有连携下去了,这个就是break的作用,从英文我们也能看懂是干什么的,就是打断的作用,我们直接打断退出这个switch部分。
我们在去执行一下我们刚刚的想法,是不是说如果我输入的6是不是就不执行了,但是我想要他打印一个成绩无效怎么办,只需要加一个东西,那就是default就行,语法用的其实和case是一样的,只不过他就和if-else的else一样,其他情况才会使用default
public class Hello {public static void main(String[] args) {int score = 6;System.out.println("这次使用switch-case");switch (score) {case 1:System.out.println("不及格");break;case 2:System.out.println("及格");break;case 3:System.out.println("中等");break;case 4:System.out.println("良好");break;case 5:System.out.println("优秀");break;default:System.out.println("成绩无效");break;}}
}
如果有小伙伴说那我每句都要加break为什么不直接让break作用在每一个上面不就好了吗,人话就是我自带break属性不就好了吗?但是这样的话就不能处理其他事情,比如我有些情况,就那月份判断季节来说,是不是就可以这样实现
public class Hello {public static void main(String[] args) {int season = 1;switch (season) {case 3:case 4:case 5:System.out.println("Now is Spring");break;case 6:case 7:case 8:System.out.println("Now is Summer");break;case 9:case 10:case 11:System.out.println("Now is Autumn");break;case 12:case 1:case 2:System.out.println("Now is Winter");break;default:System.out.println("输入的月份有误");break;}}
}
在以上代码里面是不是就是有用了,少些了8次同样的语句是吧
第三章 循环语句
循环语句是程序中最重要的步骤之一,很多地方都是需要使用到循环语句的,这块至关重要,但是又有点小麻烦,比起分支结构
循环语句有三个for、while、do-while,还有一个迭代器一样的foreach也就是增强for循环,现在还不学,之后再学习
while循环
我们先来看看while循环,while循环的语句是这样 while(条件){}
自然也是可以不用花括号,但是这样的话就会只是循环一个语句,使用循环是会使用前面学过的不少知识,我们来稍稍循环一下
public class Hello {public static void main(String[] args) {//我们现在的目标就是连续打印十次,你好int i = 0;while (i < 10) {System.out.println("你好");i++;}}
}
一般情况下我们都是会这么使用的,先声明一个整型变量初始化为0,这个是有说法,因为以后要学到的一个知识,是数组,他的下标就是从0开始,直接这样使用是比较方便的。
还有一个语句也是循环的标配,就是while循环体内部的i++,因为这个就是自增嘛,之前学过的,除了之前说过的是自增1,其实也可以等价为 i += 1
也可以等价为 i = i + 1
,然后就是内部的语句了,比如也可以写一个判断,小于5执行什么,大于5执行什么,等于5执行什么,循环还是比较有意思的
do-while循环
现在我们来讲讲这个do-while循环,首先我们先来看一个案例,之前我们也说过了 while(条件){}
中的这个条件也就是布尔值,如果我上来就不满足的话,那我直接执行不了
public class Hello {public static void main(String[] args) {int i = 10;System.out.println("开始循环");while (i < 10) {System.out.println("你好");i++;}System.out.println("结束循环");}
}
这里是不是没有执行,但是do-while不会出现这种情况,因为do-while会先执行一遍然后再判断条件,先说说语法是怎么样的 do{}while(条件);
public class Hello {public static void main(String[] args) {int i = 10;System.out.println("开始循环");do {System.out.println("你好");i++;} while (i < 10);System.out.println("结束循环");}
}
这样就能先执行一遍然后再判断条件
for循环
接下来这个可是大头,大部分情况的循环其实使用的都是for循环
for循环的语法是这样的 for(初始化值; 条件; 条件变化){};
public class Hello {public static void main(String[] args) {for (int i = 0; i < 5; i++) {System.out.println("你好");}}
}
然后for循环的这个括号里的三个该写的东西其实也可以都不写,注意分开的时候是使用分号进行分割的,初始值可以不写,因为可以使用外部的,条件可以不写,因为这样就是死循环除了使用其他方法跳出循环,
条件变化也可以不写,也可以不止写一个++,也可以使用+=2等等,一般 初始化值
和 条件变化
这两个地方使用多个参数也是可以的,只不过需要使用逗号来隔开。
第四章 跳转语句
这个跳转语句可是和循环息息相关的,然后还和switch有点小关系
那么这个跳转语句其实只有两个,一个就是switch-case里面使用过的break,和continue,从名字应该能看懂了,break就是直接打断,在循环里的作用也是直接跳出循环,然后continue就是继续循环,那他做了什么呢?那就是继续执行,
但凡执行到了continue语句,那就会直接继续执行下一次循环。
public class Hello {public static void main(String[] args) {System.out.println("测试break");for (int i = 0; i < 10; i++) {if (i == 5)break;System.out.println("你好");}}
}
以上是break的,我们现在来看看continue的
public class Hello {public static void main(String[] args) {System.out.println("测试continue");for (int i = 0; i < 10; i++) {if (i == 5)continue;if (i == 5)break;System.out.println("你好");}}
}
直接继续执行,跳过了break,但是打印也是只有9个了,因为也跳过了,就相当于执行到continue的时候就直接重新执行下一遍语句
相关文章:

一个月学会Java 第5天 控制结构
Day5 控制结构 这么叫可能有些就算有基础的人也看不懂,其实就是if-else、switch-case、for、while、do-while这几个,没基础的听到了这个也不要慌张,这几个是程序的基础,多多训练就好 第一章 顺序结构 这章其实没有什么好讲的&…...

世界职业院校技能大赛(大数据技术与应用)参赛项目介绍内容模拟示例参考
最近关注世界职业院校技能大赛的同学应该都知道了,比赛已经正式改为”世界职业院校技能大赛“了,不仅仅是名称变化,而且比赛的形式也发生了巨大的改革,2024年世界职业院校技能大赛设置42个赛道,要求各比赛项目提交项目…...

【Python】文件及目录
文章目录 概要一、文件对象的函数1.1 open()函数1.2 文件对象的函数1.3 with语句 二、基于os和os.path模块的目录操作三、基于Pandas的文件处理3.1 Pandas读写各种类型文件 其他章节的内容 概要 本文主要将了打开文件的函数open()的参数,以及文件对象的函数&#x…...

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(下)
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 概述 OpenHarmony Camera驱动模型结构 HDI Implementation&#x…...

霓虹灯数字时钟(可复制源代码)
文章目录 一、效果演示二、CodeHTMLCSSJavaScript 三、实现思路拆分CSS 部分JavaScript 部分 四、源代码 一、效果演示 文末可一键复制完整代码 二、Code HTML <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><…...

大模型微调技术之 LoRA:开启高效微调新时代
一、LoRA 简介 LoRA,即低秩适应(Low-Rank Adaptation),是一种用于微调大型语言模型的技术,旨在以较小的计算资源和数据量实现模型的快速适应特定任务或领域。 LoRA 方法通过引入低秩近似的思想,对大型预训…...

【Vue】Vue2(2)
文章目录 1 数据代理1.1 回顾Object.defineproperty方法1.2 何为数据代理1.3 Vue中的数据代理 2 事件处理2.1 事件的基本使用2.2 事件修饰符2.3 键盘事件 1 数据代理 1.1 回顾Object.defineproperty方法 <!DOCTYPE html> <html><head><meta charset&quo…...

如何实现一个基于 HTML+CSS+JS 的任务进度条
如何实现一个基于 HTMLCSSJS 的任务进度条 在网页开发中,任务进度条是一种常见的 UI 组件,它可以直观地展示任务的完成情况。本文将向你展示如何使用 HTML CSS JavaScript 来创建一个简单的、交互式的任务进度条。用户可以通过点击进度条的任意位置来…...

学会流体力学,冬天洗澡再也不冷啦
前些日子收到一位网友“究极理性怪物”的私信,说最近在学校的公共浴室洗澡时,快被冻死了,希望我从流体力学角度帮他分析一下浴室的温度分布,以便找到相对温暖的洗澡位置。 我看到后觉得很有意思,就与他展开了关于澡堂…...

WPF下使用FreeRedis操作RedisStream实现简单的消息队列
Redis Stream简介 Redis Stream是随着5.0版本发布的一种新的Redis数据类型: 高效消费者组:允许多个消费者组从同一数据流的不同部分消费数据,每个消费者组都能独立地处理消息,这样可以并行处理和提高效率。 阻塞操作:消费者可以设置阻塞操作,这样它们会在流中有新数据…...

踩坑NVTX
最开始在 【简说】NVTX Nsight Nvidia性能分析利器 看到NVTX的时候,我觉得这是一个好东西啊,可以详细说明每一段时间对应的是哪一段程序。 看了一下github,他的文章已经过时,现在已经不需要链接动态库了,直接includ…...

Ubuntu修改IP方法
方法一:通过图形化界面修改IP 打开网络设置: 点击桌面右上角的网络图标,然后选择“设置”或“网络设置”。 选择网络接口: 在网络设置窗口中,选择你正在使用的网络接口(有线或无线网络)。 进…...

C++——STL简介
目录 一、什么是STL 二、STL的版本 三、STL的六大组件 没用的话..... 不知不觉两个月没写博客了,暑假后期因为学校的事情在忙,开学又在准备学校的java免修,再然后才继续开始学C,然后最近打算继续写博客沉淀一下最近学到的几周…...

[linux] 磁盘清理相关
在 CentOS 7 中清理磁盘空间可以通过多种方法实现,以下是一些常用的步骤和命令: 1. 查找和删除大文件 你可以使用 find 命令查找占用大量空间的文件: find / -type f -size 100M 2>/dev/null这条命令会查找大于 100 MB 的文件。你可以根…...

【笔记】DDD领域驱动设计
同名读书笔记,对于一些自觉重要的点进行记录。 扩展资源:github.com/evancyz/ddd-learning UML中类图的一些基本知识 - jack_Meng - 博客园 最后的第四部分暂时没看 Part Two 模型驱动设计的构造块 Chapter 5 软件中所表示的模型 5.2 模式:…...

用AI构建小程序需要多久?效果如何?
随着移动互联网的快速发展,多端应用的需求日益增长。为了提高开发效率、降低成本并保证用户体验的一致性,前端跨端技术在如今的开发界使用已经非常普遍了,技术界较为常用的跨端技术有小程序技术、HTML5技术两大类。 2023年以来,伴…...

深度学习的应用综述
文章目录 引言深度学习的基本概念深度学习的主要应用领域计算机视觉自然语言处理语音识别强化学习医疗保健金融分析 深度学习应用案例公式1.损失函数(Loss Function) 结论 引言 深度学习是机器学习的一个子领域,通过模拟人脑的神经元结构来处理复杂的数据。近年来&…...

whereis命令:查找命令的路径
一、命令简介 whereis 命令用于查找命令的:可执行文件、帮助文件和源代码文件。 例如 $ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz找到了 ls 命令的可执行文件、帮助文件的位置。 二、命令参数 命令格式 whereis [选项] [命令名称]选项…...

【ECMAScript 从入门到进阶教程】第四部分:项目实践(项目结构与管理,单元测试,最佳实践与开发规范,附录)
第四部分:项目实践 第十四章 项目结构与管理 在构建现代 Web 应用程序时,良好的项目结构和管理是确保代码可维护性、高效开发和部署成功的关键因素。这一章将深入讨论项目初始化与配置,以及如何使用构建工具来简化和优化项目建设过程。 14…...

算法讲解—最小生成树(Kruskal 算法)
算法讲解—最小生成树(Kruskal 算法) 简介 根据度娘的解释我们可以知道,最小生成树(Minimum Spanning Tree, MST)就是:一个有 n n n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n n n 个结点…...

掌握 C# 多线程与异步编程
现代应用程序通常需要执行复杂的计算或处理 I/O 操作,这些操作可能会导致主线程阻塞,从而降低用户体验。C# 提供了多线程与异步编程的多种工具,让我们能够高效地并发处理任务。本文将介绍 C# 中的多线程与异步编程,包括 Thread 类…...

Angular 2 用户输入
Angular 2 用户输入 Angular 2 是一个由 Google 维护的开源前端 web 框架,用于构建单页应用程序(SPA)。它以其高效的双向数据绑定、模块化架构和强大的依赖注入系统而闻名。在 Angular 2 应用程序中,处理用户输入是核心功能之一,因为它允许应用程序响应用户的操作。 Ang…...

线程安全的单例模式 | 可重入 | 线程安全 |死锁(理论)
🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据…...

解决方案:梯度提升树(Gradient Boosting Trees)跟GBDT(Gradient Boosting Decision Trees)有什么区别
文章目录 一、现象二、解决方案梯度提升树(GBT)GBDT相同点区别 一、现象 在工作中,在机器学习中,时而会听到梯度提升树(Gradient Boosting Trees)跟GBDT(Gradient Boosting Decision Trees&…...

亚马逊国际商品详情API返回值:电商精准营销的关键
亚马逊国际商品详情API(Amazon Product Advertising API)为开发者提供了一种获取商品信息的方式,这些信息对于电商精准营销至关重要。通过分析API返回的详细数据,商家可以制定更精准的营销策略,提高用户购买转化率。 …...

python爬虫 - 进阶requests模块
🌈个人主页:https://blog.csdn.net/2401_86688088?typeblog 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、SSL证书问题 (一)跳过 SSL 证书验证 ࿰…...

代码随想录 103. 水流问题
103. 水流问题 #include<bits/stdc.h> using namespace std;void dfs(vector<vector<int>>& mp, vector<vector<int>>& visit, int y, int x){if (visit[y][x] 1) return;visit[y][x] 1;if (y > 0){if (mp[y][x] < mp[y - 1][x…...

数据结构-排序1
1.排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序…...

Springboot 整合 durid
文章目录 Springboot 整合 druiddruid的优势配置参数使用整合 Druid配置数据源配置参数绑定配置参数配置监控页面配置拦截器 Springboot 整合 druid druid的优势 可以很好的监控 DB 池连接 和 SQL 的执行情况可以给数据库密码加密可以很方便的编写JDBC插件 配置参数 使用 整…...

JVM 系列知识体系全面回顾
经过几个月的努力,JVM 知识体系终于梳理完成了。 很早之前也和小伙伴们分享过 JVM 相关的技术知识,再次感谢大家支持和反馈。 最后再次献上 JVM系列文章合集索引,感兴趣的小伙伴可以点击查看。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的…...