java简单循环结构
while循环结构
Java提供的while条件循环。它的基本用法是:
while (条件表达式) {循环语句
}
// 继续执行后续代码
while循环在每次循环开始前,首先判断条件是否成立。如果计算结果为true,就把循环体内的语句执行一遍,如果计算结果为false,那就直接跳到while循环的末尾,继续往下执行。
public class Main{public static void main(String[] args){int sum = 0;int n = 1;while(n<=100){sum = sum + n;n++;}System.out.println(sum);}
}
注意到while循环是先判断循环条件,再循环,因此,有可能一次循环都不做。
如果循环条件永远满足,那这个循环就变成了死循环。死循环将导致100%的CPU占用,用户会感觉电脑运行缓慢,所以要避免编写死循环代码。
do while循环
在Java中,while循环是先判断循环条件,再执行循环。而另一种do while循环则是先执行循环,再判断条件,条件满足时继续循环,条件不满足时退出。它的用法是:
do {执行循环语句
} while (条件表达式);
可见,do while循环会至少循环一次.
public class Main{public static void main(String[] args){int sum = 0;int n = 1;do{sum = sum + n;n++;}while(n<=100);System.out.println(sum);}
}
使用do while循环时,同样要注意循环条件的判断。
for循环
除了while和do while循环,Java使用最广泛的是for循环。
for循环的功能非常强大,它使用计数器实现循环。for循环会先初始化计数器,然后,在每次循环前检测循环条件,在每次循环后更新计数器。计数器变量通常命名为i。
在for循环执行前,会先执行初始化语句int i=1,它定义了计数器变量i并赋初始值为1,然后,循环前先检查循环条件i<=100,循环后自动执行i++,因此,和while循环相比,for循环把更新计数器的代码统一放到了一起。在for循环的循环体内部,不需要去更新变量i。
因此,for循环的用法是:
for (初始条件; 循环检测条件; 循环后更新计数器) {// 执行语句
}
注意for循环的初始化计数器总是会被执行,并且for循环也可能循环0次。
public class Main{public static void main(String[] args){int sum = 0;for(int i=1;i<=100;i++){sum = sum + i;}System.out.println(sum);}
}
使用for循环时,计数器变量i要尽量定义在for循环中
int[] ns = { 1, 4, 9, 16, 25 };
for (int i=0; i<ns.length; i++) {System.out.println(ns[i]);
}
// 无法访问i
int n = i; // compile error!
如果变量i定义在for循环外:
int[] ns = { 1, 4, 9, 16, 25 };
int i;
for (i=0; i<ns.length; i++) {System.out.println(ns[i]);
}
// 仍然可以使用i
int n = i;
那么,退出for循环后,变量i仍然可以被访问,这就破坏了变量应该把访问范围缩到最小的原则。
for循环还可以缺少初始化语句、循环条件和每次循环更新语句,例如:
// 不设置结束条件:
for (int i=0; ; i++) {...
}
// 不设置结束条件和更新语句:
for (int i=0; ;) {...
}
// 什么都不设置:
for (;;) {...
}
for each循环
int[] ns = { 1, 4, 9, 16, 25 };
for (int i=0; i<ns.length; i++) {System.out.println(ns[i]);
}
public class Main{public static void main(String[] args){int[] ns= {1,2,3,4,5,9,16,25};for(int n : ns){System.out.println(n);}}
}
和for循环相比,for each循环的变量n不再是计数器,而是直接对应到数组的每个元素。for each循环的写法也更简洁。但是,for each循环无法指定遍历顺序,也无法获取数组的索引。
除了数组外,for each循环能够遍历所有“可迭代”的数据类型,包括后面会介绍的List、Map等。
if判断
在Java程序中,如果要根据条件来决定是否执行某一段代码,就需要if语句。
if (条件) {// 条件满足时执行
}
根据if的计算结果(true还是false),JVM决定是否执行if语句块(即花括号{}包含的所有语句)。
else
if语句还可以编写一个else { … },当条件判断为false时,将执行else的语句块:
n = 70;
if(n >= 60){System.out.println("xxx");
}else{System.out.println("ccc");
}
System.out.println("end");
注意,else不是必须的。
还可以用多个if … else if …串联。例如:
if (n >= 90) {// n >= 90为true:System.out.println("优秀");
} else {// n >= 90为false:if (n >= 60) {// n >= 60为true:System.out.println("及格了");} else {// n >= 60为false:System.out.println("挂科了");}
}
执行发现,n = 100时,满足条件n >= 90,但输出的不是"优秀",而是"及格了",原因是if语句从上到下执行时,先判断n >= 60成功后,后续else不再执行,因此,if (n >= 90)没有机会执行了
// 从大到小依次判断:
if (n >= 90) {// ...
} else if (n >= 60) {// ...
} else {// ...
}
或者改写成从小到大依次判断:
// 从小到大依次判断:
if (n < 60) {// ...
} else if (n < 90) {// ...
} else {// ...
}
判断引用类型相等
在Java中,判断值类型的变量是否相等,可以使用==运算符。但是,判断引用类型的变量是否相等,表示“引用是否相等”,或者说,是否指向同一个对象。例如,下面的两个String类型,它们的内容是相同的,但是,分别指向不同的对象,用判断,结果为false
switch多重选择
switch语句根据switch (表达式)计算的结果,跳转到匹配的case结果,然后继续执行后续语句,直到遇到break结束执行。
使用switch语句时,只要保证有break,case的顺序不影响程序逻辑:
switch (option) {
case 3:...break;
case 2:...break;
case 1:...break;
}
但是仍然建议按照自然顺序排列,便于阅读。
switch语句还可以匹配字符串。字符串匹配时,是比较“内容相等”。
使用switch时,如果遗漏了break,就会造成严重的逻辑错误,而且不易在源代码中发现错误。从Java 12开始,switch语句升级为更简洁的表达式语法,使用类似模式匹配(Pattern Matching)的方法,保证只有一种路径会被执行,并且不需要break语句
yield
大多数时候,在switch表达式内部,我们会返回简单的值。
但是,如果需要复杂的语句,我们也可以写很多语句,放到{…}里,然后,用yield返回一个值作为switch语句的返回值
相关文章:
java简单循环结构
while循环结构 Java提供的while条件循环。它的基本用法是: while (条件表达式) {循环语句 } // 继续执行后续代码while循环在每次循环开始前,首先判断条件是否成立。如果计算结果为true,就把循环体内的语句执行一遍,如果计算结果…...
【Servlet+Jsp+Mybatis+Maven】WEB图书馆管理系统
web图书馆管理系统一、绪论二、流程和其页面展示效果流程页面效果项目结构三、具体实现第一步:备数据库表第二步:编写登录前端代码第三步:利用过滤器处理安全问题第四步:控制层去实现相关调用第五步:实现持久化层与数据…...
【WPF】WindowChrome 自定义窗口完美实现
WindowChrome 自定义窗口完美实现简介效果图自定义最小化、最大化、关闭按钮布局实现结语简介 Microsoft官网关于 WindowChome 的介绍 截取Microsoft文章的一段话: 若要在保留其标准功能时自定义窗口,可以使用该 WindowChrome 类。 该 WindowChrome…...
Python客户端使用SASL_SSL连接Kafka需要将jks密钥转换为pem密钥,需要转化成p12格式再转换pem才能适配confluent_kafka包
证书生成 生成证书以及jks参考以下文章 https://blog.csdn.net/qq_41527073/article/details/121148600 证书转换jks -> pem 需要转化成p12以下转换才能适配confluent_kafka包,直接jks转pem会报错不能使用,具体参考以下文章 https://www.ngui.cc/z…...
JDK8 ConcurrentHashMap源码分析
文章目录常量说明put() 方法putVal() 方法initTable():初始化数组treeifyBin():链表转红黑树tryPresize():初始化数组扩容TreeBin() 构造方法:生成红黑树putTreeVal():往红黑树中插入值helpTransfer():多线…...
前置知识-初值问题、欧拉法、改进欧拉法
1.1 初值问题 初值问题是科研、工程技术应用中最常见的一类问题, 一阶常微分方程的初值问题表述如下: 已知 u ( x ) u(x) u(x) 的起始点 ( x 0 , u 0 ) \left(x_0, u_0\right)...
睡眠影响寿命,这几个睡眠习惯赶紧改掉!
我们知道,现在睡眠不足已经成为普遍问题,但你知道睡眠的时长会影响寿命吗?熬夜对身体不好,已是老生常谈。但睡得过早,也可能影响寿命!2021年《睡眠医学》杂志一项针对21个国家11万名参与者的研究中发现&…...
Linux逻辑卷管理器(PV、VG、LV、PE)
目录 PV阶段 VG阶段 LV阶段 文件系统阶段 逆向操作(删除LVM) 逻辑卷管理器(Logical Volume Manager),简称LVM LVM的做法是将几个物理的分区(或磁盘)通过软件组合成为一块看起来时独立的大…...
Centos7 内核升级
一、背景 在 CentOS 使用过程中,高版本的应用环境可能需要更高版本的内核才能支持,所以难免需要升级内核,所以下面将介绍yum和rpm两种升级内核方式。 关于内核种类: kernel-ml——kernel-ml 中的ml是英文【 mainline stable 】的缩写&…...
SpringBoot 启动配置文件加载和参数配置修改问题
SpringBoot 配置文件修正和参数覆盖SpringBoot 配置文件加载和参数覆盖1、SpringBoot 配置文件加载1.1、修改application.properties的参数几种方式1.2、方法一:直接CMD1.3、方法二:系统变量配置1.4、方法三:程序运行配置1.5、方法四…...
布隆过滤器和布谷鸟过滤器详解
今天和大家分享下布隆过滤器和布谷鸟过滤器 一.布隆过滤器 1.简单介绍 布隆过滤器是用于检索一个元素是否在一个集合中的算法,是一种用空间换时间的查询算法。 2.实现原理 布隆过滤器的存储结构是一个bitmap结构,初始值都是0,如下图所示&am…...
WebGIS前端框架(openlayers,mapbox,leaflet)图形图像底层渲染原理分析
学了这么多的框架,做了这么多的项目,你是否清楚你使用的GIS框架(mapbox,open layers,cesium,leaflet)底层到底是什么原理?是否清楚哪些所谓的地图影像,矢量图形,图标,图像动画等是如何渲染到网页上的?这篇文章就大家解读一下WebGIS的底层原理。 首先说说历史,有时…...
AcWing语法基础课笔记 第五章 C++中的字符串
第五章 C中的字符串 字符串是计算机与人类沟通的重要手段。 ——闫学灿 字符与整数的联系——ASCII码 每个常用字符都对应一个-128~127的数字,二者之间可以相互转化: 常用ASCII值:’A’-‘Z’ 是65~90,’a’-‘z’…...
抓包工具Charles(一)-下载安装与设置
无论是在测试、开发工作中,抓包都是很重要、很常用的技能。Charles作为一款抓包工具,能够满足大部分的工作需求。 文章目录一、下载地址二、安装三、安装根证书(电脑)四、设置五、抓包附录:[零基础入门接口功能测试教程…...
SpringBoot09:Swagger
什么是Swagger? ①是一个API框架 ②可以在线自动生成 RestFul 风格的API文档,实现API文档和API定义同步更新 ③可以直接运行、在线测试 API 接口 ④支持多种语言(Java、PHP等) 官网:API Documentation & Desi…...
Git 常用命令
笔记-git命令1、名词2、基本操作3、分支操作1、名词 master: 默认开发分支origin: 默认远程版本库Index / Stage: 暂存区Workspace: 工作区Repository: 仓库区 (或本地仓库)Remote: 远程仓库 2、基本操作 配置级别 -local (默认,高级优先…...
查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决
查看jdk安装路径, 在windows上实现多个java jdk的共存解决办法, 安装java19后终端乱码的解决 目录 一、查看jdk(java开发工具包)安装路径的方法 二、在windows上实现多个java jdk的共存 (1)、安装好多…...
链表数据结构
用途: 链表是一种用于计算机中存储与组织数据的结构,链表将数据以节点的形式串联起来,其存储的容量大小可以动态伸缩。 结构: typedef struct {int data; /*当前节点的数据*/node *next;/*下一个节点的指针*/node *last;/*上一个…...
汽车DTC故障内码与标准故障码的解析与转换
目录 一、故障内码与标准故障码的解析 (1)故障内码的信息格式与解析 (2)故障内码中DTC状态的解析 (3)故障内码与标准故障码之间的对应关系 二、故障内码与标准故障码的转换代码 一、故障内码与标准故障…...
零基础学习测试还是开发?
软件测试作为IT行业的刚需职位,其实是非常适合0基础的小白同学加入学习的但是具体选择测试还是开发还是要看你个人的兴趣爱好以及学习能力,对哪个感兴趣,哪个能学的会就选择哪个就可以了 平时说起程序员印象中大都是做Java、做前端、做后端&…...
如何加入new bing候补名单
如何加入new bing候补名单 我们都知道现在最新版edges中已经提示我们可以加入new bing候补名单,但国内环境下无法正常加入new bing候补名单,这篇文章讲告诉你如何绕过限制加入new bing候补名单 下载配置 HeaderEditor 插件 下载地址microsoftedge.mic…...
中国天气——西风带环流和寒潮
中国天气——西风带环流和寒潮 一. 西风环流概述 1. 概念 西风带:中高纬度地区平均水平环流在对流层盛行西风,称之为西风带西风带波动:西风带围绕极涡沿纬圈运动,平均而言表现为冬季三槽三脊,夏季四槽四脊ÿ…...
2022黑马Redis跟学笔记.实战篇(四)
2022黑马Redis跟学笔记.实战篇 四4.3.秒杀优惠券功能4.3.1.秒杀优惠券的基本实现一、优惠卷秒杀1.1 全局唯一ID1.2 Redis实现全局唯一Id1.3 添加优惠卷1.4 实现秒杀下单4.3.2.超卖问题4.3.3.基于乐观锁解决超卖问题1. 悲观锁2. 乐观锁3. 乐观锁解决超卖问题4.4 秒杀的一人一单限…...
Allegro中如何删除多余D码操作指导
Allegro中如何删除多余D码操作指导 用Allegro做PCB设计的时候,在最后输出生产文件的时候,必须清除多余的D码,不让多余的D码出现在D码文件中,类似下图 如何清除多余D码,具体操作如下 点击Tools点击Padstack...
学生投票系统-课后程序(JAVA基础案例教程-黑马程序员编著-第三章-课后作业)
【案例3-4】学生投票系统 记得 关注,收藏,评论哦,作者将持续更新。。。。 【案例介绍】 案例描述 某班级投票竞选班干部,班级学生人数为100人,每个学生只能投一票。 本任务要求,编程实现一个投票程序&…...
初始化一个列表python
1.初始化递增的list: list1 list(range(10)) #print list1 #[0,1,2,...,9] 2.初始化每项为0的一维数组: list2 [0] * 5 #print list2 #[0,0,0,0,0] 3.初始化固定值的一维数组: initVal 1 listLen 5 list3 [ initVal for i in range(5)] …...
【electron】webview嵌入页面发送消息给父级页面
场景需求: 嵌入页面操作时,通知父级页面 涉及知识点: contextBridge 嵌入页面可使用暴露的对象ipc-message 监听嵌入页面发送的消息webview preload 嵌入页面运行加载的脚本 问题(两种方式) 使用监听ipc-message需…...
Whids:一款针对Windows操作系统的开源EDR
关于Whids Whids是一款针对Windows操作系统的开源EDR,该工具所实现的检测引擎基于先前的 Gene项目构建,并专门设计可以根据用户定义的规则匹配Windows事件。 功能特性 1、为社区提供一款功能强大且开源的Windows EDR; 2、支持检测规则透明化…...
初级调色转档CameraRaw
一级调色 还原-曝光-色彩-细节-质感 修图的范围 整体(掌握基本面板)——局部(曲线)——具象(混色器) 修片最开始的准备工作 看直方图:明暗跟色彩的数据表 分析图片是否存在以下问题: 1.曝光…...
Mybatis源码(3) - Executor执行过程 | 一级缓存 | 二级缓存
0. 前言:1. CachingExecutor#query:1.1. BoundSql:1.2. CacheKey:1.3. 二级缓存:1.4. 一级缓存:2. JDBC过程执行:3. 结果集处理:4. Mybatis的一级缓存、二级缓存区别:0. …...
小说网站制作公司/保健品的营销及推广方案
如何安全找回丢失数据的方法1. 下载并安装B计划数据恢复软件。2. 运行恢复软件,点击“深度扫描”。深度扫描是绕过文件系统直接从硬盘、U盘、SD卡等设备底层恢复数据,因此使用深度恢复能找回更多完整数据。同时我们要搞清楚物理硬盘和逻辑硬盘的区别。物…...
简约网站模版/百度搜索引擎怎么做
simhash学习过程中的笔记 文档如果直接使用MD5做hash这种方式进行去重操作,对于一些相似文档的处理就无能为力了,简单的一个字符的变化,hash值就会发生变化,Simhash简单来说就是类似文档所产生的hash值也是类似的,这样…...
全球最好的黄页网站/域名解析ip
如果对您有帮助,请点赞告诉我,如果没有解决您的疑惑,请您留言,我陪您一起努力解决!这里只介绍常用的一些概念,一些极少用到的概念为避免混淆这里不做介绍。 简单的来说,BLE的服务端属性数据库可…...
长沙广告网络公司/怎么进行seo
2019独角兽企业重金招聘Python工程师标准>>> 1. EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 ➤ 通过EXPLAIN,我们可以分析出以下结果&…...
非法集资罪提供网站建设/线上推广方式都有哪些
数据结构和算法到底有什么用? 数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排。数据结构包括数组、链表、栈、二叉树、哈希表等等。算法对这些结构中的数据进行各种处理。例如,查找一条特殊的数据项或对数据进行排序…...
网站镜像上传到域名空间/注册城乡规划师含金量
前言 XML现已成为一种通用的数据交流方式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便,对于XML的解析有四种方式:DOM生成和解析XML文档,SAX生成和解析XML文件&…...