Java常用流程控制语句实现原理解析
作者:弥漫s 发布时间:2023-11-08 14:11:34
一、判断语句
最常用的顺序结构只能顺序执行,并不能进行判断和选择。于是便有了下面两种分支结构
if语句
switch语句
1. if语句
一个if语句包含一个布尔表达式和一条或多条语句。
1.1 判断语句1——if
if语句的第一种格式
if(关系表达式){
语句体;
}
执行流程
首先判断关系表达式结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
1.2 判断语句2——if...else
if语句的第二种格式:if...else
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程
首先判断关系表达式结果是true还是false
如果是true就执行语句体1
如果是false就不执行语句体 2
1.3 判断语句3——if...else if...else
if语句的第三种格式:if...else if...else
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
}else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
执行流程
首先判断关系表达式1结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达3,看其结果是true还是false
......
如果没有任何关系表达式为true,就执行语句体n+1
注意:有多个if...else只执行一个
二、选择语句
1. 选择语句——switch
Switch语句格式:
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break结束
如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束
注意事项:
多个case后面的数值不可以重复
switch后面小括号当中只能说下列数据类型:
基本数据类型:bytr/short/char/int
引用数据类型:String字符串、eumn枚举
switch语句格式很灵活:
前后顺序可以颠倒
break语句可以省略
2. case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象。也就是不会继续判断下一个case的值,而是直接向后运行,直到遇到break,或者整体switch结束
由于case存在穿透性,因此我们在编写switch语句时,必须注意要写上break
三、循环结构
顺序结构的程序语句只能被执行一次。如果想要同样的操作多次执行,,就需要使用到循环结构。
常用的循环结构有三种:
for循环
while循环
do…while循环
循环结构由如下四部分组成:
初始化语句:在循环最开始执行,而且执行一次
条件判断:如果成立,则循环继续;否则退出循环
循环体:指的是重复要做的事情,由若干行语句组成
步进语句:每次循环之后都要进行的扫尾工作
1. for循环
for 循环语句是支持迭代的一种通用结构,利用每次迭代之后更新的计数器或类似的变量来控制迭代次数。for 循环语句是 while 循环的一种简化形式,执行的次数在执行前就已经确定。
语法格式如下:
for(初始化; 布尔表达式; 步进语句) {
循环体
}
2. while循环
循环语句标准格式
while (条件判断){
循环体
}
循环语句扩展格式:
初始化表达式
while(布尔表达式){
循环体
步进语句
}
3. do…while循环
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要不满足条件,也至少执行一次。do…while循环和while循环相似,不同的是,do…while循环至少会执行一次。
do…while循环的标准格式:
do {
循环体
}while(条件判断);
do…while循环的扩展格式:
初始化语句
do{
循环体
步进语句
}while(条件判断);
4. 三种循环的区别
如果条件判断没有满足过,那么for和while循环将会执行0次,do...while循环会至少执行一次
for循环的变量在小括号内定义,只有在循环内部才可以使用;while和do…while循环的初始化语句在外面,所以跳出循环后还可以继续使用
在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while
5. 跳出语句
berak语句:主要用在循环语句或者switch语句中,用来跳出整个语句块打断这个循环。它能跳出最里层的循环,并且继续执行该循环下面的语句。
continue语句:适用于任何循环控制结构中。作用是结束本次循环,继续下一次的循环 。
在for循环中,continue语句使程序立即跳转到步进语句
在while或者do…while循环中,程序立即跳转到布尔表达式的判断语句
6. 死循环
死循环就是循环的条件永远为true,是永不结束的循环 。标准格式为:
while(true){
循环体
}
7. 嵌套循环
嵌套循环是指一个循环的循环体是另一个循环。如for循环里面还有一个for循环,这就是嵌套循环。总共的循环次数=外循环次数*内循环次数
来源:https://www.cnblogs.com/lf-637/p/12872929.html


猜你喜欢
- 最近做MVC网站时刚好用到,用以提供一个完整的文件夹并压缩下载,正好做个笔记。拷贝文件夹的所有内容到另一个文件夹内:public stati
- java 解决异常 2 字节的 UTF-8 序列的字节 2 无效的问题  
- 前言socket是软件之间通讯最常用的一种方式。c#实现socket通讯有很多中方法,其中效率最高就是异步通讯。异步通讯实际是利用windo
- Transfer-Encoding简介transfer-eccoding所描述的是消息请求(request)和响应(response)所附带
- 本文实例讲述了Android编程自定义AlertDialog样式的方法。分享给大家供大家参考,具体如下:开发的时候,通常我们要自定义Aler
- 中文乱码问题真的是一个很棘手的问题,特别是从前台传到后台之后,都不知道问题出在哪里了。现在分享解决javaWEB中前后台中文乱码问题的3种方
- 接口定义了一系列的行为规范,为类型定义一种Can-Do的功能。例如,实现IEnumerable接口定义了GetEnumerator方法,用于
- using System;using System.Collections.Generic;using System.ComponentMo
- 在上一篇文章:Flutter进阶—实现动画效果(二)的最后,我们实现了一个控件,其中包含各种布局和状态处理控件。以及使用自定义的动画感知绘图
- Mybatis注解开发单表操作MyBatis的常用注解Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了。我
- 上一篇文章讲解了Spring Cloud 整合 nacos 实现服务注册与发现,nacos除了有服务注册与发现的功能,还有提供动态配置服务的
- 本文实例为大家分享了Unity实现俄罗斯方块游戏的具体代码,供大家参考,具体内容如下一、演示二、实现思路创建每一个方块可移动到的位置点,可以
- Android 吸入动画效果详解 . 这里,我要介绍的是如何在Android上面实现一个类似的效果。先看看我实现的效果图。 &n
- C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一
- RunnableRunnable接口非常简单,就定义了一个方法run(), 实现Runnable接口的run方法就可以实现多线程// 函数式
- 不知道有人做没做过对日外包,如果做过的话,那么对vb.net应该非常熟悉了,当年我刚毕业的时候也做过四个月的外包,那种日子简直不是人过的,就
- 没有借助任何第三方库,完全基于JAVA Socket实现一个最小化的HTTP文件下载客户端。完整的演示如何通过Socket实现下载文件的HT
- 定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂方法模式代码in
- Java内部类(Inner Class),类似的概念在C++里也有,那就是嵌套类(Nested Class),乍看上去内部类似乎有些多余,它
- 在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载。所以自己写了一个压缩文件的工具类。该工具类支持单个文件和文件夹压缩。放代码: