Java学习笔记(五)--流程控制
文章目录
- Java语言基础(三)
- 一、流程控制
- 1.1 复合语句
- 1.2 条件语句
- 1.2.1 if条件语句
- 二、switch多分支语句
- 三、循环语句
- 3.1 while 循环语句
- 3.2 do ··· while 循环语句
- 3.3 for 循环语句
- 四、循环控制
- 4.1 break 语句
- 4.2 continue 语句
- 注意:
- 1、两个浮点数值的相等测试
- 2、java标签
Java语言基础(三)
一、流程控制
1.1 复合语句
Java语言的符合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“ { ” 开始,闭括号 “ } ”结束。复合语句中的每个语句都是从上到下被执行。复合语句以整个块为单位,能够用在任何个单独语句可以用到的地方,并且在复合语句中还可以嵌套复合语句。
使用复合语句时,复合语句为局部变量创建了一个作用域,该作用域作为程序的一部分,在该作用域中某个变量被创建并能够被使用。如果在某个变量的作用域外使用该变量,则会发生错误。
1.2 条件语句
1.2.1 if条件语句
1、简单的if条件语句
if(布尔表达式)
{语句序列
}
- 布尔表达式:可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。
- 语句序列:一条或多条语句。如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。若语句序列仅有一条语句,则可以省略条件语句中的 “ { } ”。
条件语句后面的语句序列省略时,可以保留外面的大括号;也可以省略大括号,然后在末尾添加 “ ;”。如下所示两种情况都是正确的。
boolean b = false;
if(b);
//另一种写法
boolean b = false;
if(b){}
2、if···else语句
if(布尔表达式)
{若干语句
}
else
{若干语句
}
如果布尔表达式的值为 true,则执行紧跟if语句的复合语句,如果表达式的值为false,则执行else语句后面的复合语句。
对于if···else语句可以使用三元运算符对语句进行简化,如下面代码:
if(a>0)b = a;
elseb = -a;
//可以简写成:
b = a>0? a: -a;
3、if···else if 多分支语句
if(布尔表达式 1){语句序列1
}
else if(布尔表达式 2){语句序列2
}
···
else if(布尔表达式 n){语句序列n
}
else {语句序列m
}
当条件表达式1的值为true时,执行语句序列1;当条件表达式为true时,执行语句序列2,依次类推。当所有else if的条件表达式都不成立时,则执行else后的语句序列m。当省略任意一组语句序列时,可以保留其外的“ { } ”,也可以将 “ { } ” 替换为 “ ;”。最多只能有一个else语句,并且必须放在最后。不需要时else语句可以省略。
二、switch多分支语句
检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测,以此类推。这样的问题也可使用switch语句。
switch(expression){case value0 ://语句break; //可选case value1 ://语句break; //可选···default : //可选//语句
}
switch 语句中的变量类型可以是:整型、字符型或字符串类型
value 必须为整型、字符型或字符串类型的常量值,不能为实数,一个语句里 case 的常量值必须互不相同。
switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句,或运行完所有语句。
switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。
三、循环语句
循环语句就是在满足一定条件的情况下个反复执行某一个操作。Java 提供了3种常用的循环语句,分别是 while 循环语句、do···while 循环语句和 for 循环语句。
3.1 while 循环语句
while 语句也称条件判断语句,它的循环方式为利用某一个条件来控制是否要继续反复执行这个语句。
while(条件表达式)
{执行语句
}
当条件表达式的返回值为真时,则执行 “ { } ” 中的语句,当执行完 “ { } ”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。
注意while表达式的括号后加 “ ;”,表示程序要执行一条空语句,而进入无限循环。
while(表达式);
3.2 do ··· while 循环语句
do ··· while 语句与while 语句类似,他们之间的区别是 while 语句先判断条件是否成立再执行循环体,而 do ··· while 循环语句则先执行一次循环,再判断条件是否成立。也就是说, do ··· while 循环语句中 “ { } ” 中的程序至少要被执行一次。
do
{执行语句
}while(条件表达式);
书写时要注意 do ··· while 语句在结尾处多了一个分号(;)。
3.3 for 循环语句
一个for循环可以用来重复执行某条语句,知道某个条件得到满足。
for(表达式1;表达式2;表达式3)
{语句序列
}
- 表达式1:初始化表达式,负责完成变量的初始化;
- 表达式2:循环条件表达式,值为 boolean 型的表达式,指定循环条件;
- 表达式3:循环后操作表达式,负责修整变量,改变循环条件。
在执行 for 循环时,首先执行表达式1,完成某一变量的初始化工作;下一步判断表达式2的值,若表达式2的值为true,则进入循环体;在执行完循环体后紧接着计算表达式3,这部分通常是增加或减少循环控制变量的一个表达式。这样一轮循环就结束了。第二轮循环从表达式2开始,若表达式2返回true,则继续循环,否则跳出整个 for 语句。
for 语句中的根据情况表达式可以省略,比如使用 for 循环来实现无限循环。
for(;;)
{···
}
//对于种种循环可以通过 break 语句跳出循环。
for(;;)
{if(条件表达式)break;···
}
for each 遍历
for each 循环是对 for 语句遍历数组等方面的特殊简化版本的称呼。
for(元素变量x: 遍历对象odj)
{引用了x的Java语句;
}
该变量x的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等。遍历对象是要访问的数组名,或者是返回值为数组的方法。foreach 语句中的元素变量x,不必对其进行初始化。
四、循环控制
循环控制包含两个方面的内容:一方面是控制循环变量的变化方式,另一方面是控制循环的跳转。控制循环的跳转需要用到 break 和 continue 两个关键字。break 是中断循环,continue 是执行下一次循环。
4.1 break 语句
使用 break 语句可以跳出 switch 结构,在循环结构中,同样可以使用 break 语句跳出当前循环体,从而中断当前循环。
brake;
当遇到循环嵌套的情况,break 语句只会使程序跳出包含它的最内层的循环结构,只跳出一层循环。如果想让 break 跳出外层循环,Java提供了 “标签” 的功能。
标签名 : 循环体
{break 标签名;
}
- 标签名:任意标识符;
- 循环体:任意循环语句;
- break 标签名:break 跳出指定的循环体,此循环体的标签名必须与break 后的标签名一致。
4.2 continue 语句
continue 不是立即跳出循环体,而是跳过本次循环结束当前的语句,回到循环的条件测试部分,从新开始执行循环。在 for 循环语句中遇到 continue 后,首先执行循环的增量部分,然后进行条件测试。在 while 和 do ··· while 语句使控制直接回到条件测试部分。
continue;
continue 也支持标签功能:
标签名 : 循环体
{continue 标签名;
}
- 标签名:任意标识符;
- 循环体:任意循环语句;
- continue 标签名:continue 跳出指定的循环体,程序从标签名位置继续执行下一次循环。此循环体的标签名必须与 continue 后的标签名一致。
注意:
1、两个浮点数值的相等测试
检测两个浮点数是否相等要各位小心。浮点数具有有限的计算精度,涉及浮点数的计算可能引入取整错误。
虽然不能依赖两个浮点数值的相等测试,但是可以通过测试两个数的差距小于某个阈值,来比较它们是否已经足够接近。也就是,对于一个非常小的值 ε,如果 |x-y|<ε ,那么 x 和 y 非常接近。ε 是一个读为 “ epsilon” 的希腊字母,常用于表示一个非常小的值。通常,将 ε 设为 10(^-14) 来比较两个 double 类型的值,而设为 10^-7 来比较两个float 类型的值。
2、java标签
标签可以用到任何语句中,甚至可以应用到 if 语句或者块语句中。
Java学习笔记(五)--流程控制相关推荐
- Java学习笔记(五):一张图总结完JVM8基础概念
Java学习笔记(五):一张图总结完JVM8基础概念 引文 最近在学习JVM的相关内容,好不容易把基础概念全部都学了一遍,却发现知识网络是零零散散的.迫不得已,只好再来一次总的归纳总结.为了更好的理解 ...
- JAVA学习笔记五---函数
JAVA学习笔记五---函数 5.1 方法的学习 编写一个程序,求圆的周长和面积. package practice; /*** 编写一个程序,求圆的周长和面积.* @author iszhangyo ...
- Python学习笔记3 流程控制、迭代器、生成器
第3章 流程控制.迭代器.生成器 3.1 选择语句 1.语法:(1)if -else (2)if-elif-else 2.注意:(1)每个条件后面要使用冒号:(2)使用缩进划分语句块(3)python ...
- python学习笔记3—流程控制if、for、while
流程控制if if 语句 if expression: statement(s) else else语句: if 语句,else语句 if expression: statement(s) else: ...
- Python学习笔记02_流程控制
Python 文件的创建和执行 创建和打开文件 打开cmd,输入以下命令,运行.py 文件 python xxx.py 条件判断 用代码告诉计算机,什么条件下该做什么.很多编程语言都会使用 if .e ...
- 【Java学习笔记五】Java异常处理
异常通常分为三类: 程序可控制的异常:一般是可预见的错误,不是致命的.例如:除数为0,数组下标越界. 程序不可控制的的异常:这种异常往往是致命的,但是系统可以预见的.例如:系统栈溢出. 人为异常 当系 ...
- java学习笔记(五)----super用法,final用法,抽象类,接口
子类不会继承父类的构造方法,在子类的构造方法中可使用super(参数列表)调用父类的构造方法. class Person { String name; int age; public Pers ...
- linux设置程序循环,linux shell编程学习笔记(7)流程控制之循环结构
2.1.for循环 1)遍历/列表式循环 --根据变量的不同取值,重复执行命令序列 格式: for 变量名 in 值列表 do 命令序列 done 示例:输出在线的主机IP #!/bin/bash ...
- [精易软件开发工程师Leo学习笔记]007流程控制
如果: 如果:满足条件执行一个分支,不满足则执行另外一个分支 分支线是告诉开发者成立与不成立的执行区域 下面这段代码,如果里面条件成立,所以运行第一条分支,也就是输出成立 判断和如果的区别: 判断规 ...
- JAVA学习笔记(五十七)- 常用设计模式
单例模式 /** 单例模式* 应用场合:有些对象只需要一个,此时可以使用单例模式* 作用:保证整个应用中某个实例有且只有一个* 类型:饿汉模式.懒汉模式*/ public class Test04 { ...
最新文章
- CodeChef CBAL
- C#学习笔记之线程 - 同步上下文
- apache 访问出现403 Forbidden
- ITK:可变长度向量
- 查看JupyterNotebook的kernel及存放位置
- linux之more命令
- 开启linux ssh
- 柯洁获清华大学免试入学推荐资格
- AD+DNS安装步骤详解
- syslog-ng按源ip保存记录
- python anaconda和pycharm_Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项...
- PDA与服务器时间同步
- Gradle下载官方地址
- Java Web开发后端常用技术汇总
- 【JavaScript 红宝书】JavaScript 高级教程第 3 版学习笔记
- day03 爬取京东信息,bs4
- 离散数学---循环群,左陪集,子群
- wangEditor富文本编辑器自定义图片上传
- 云备份-保障你的数据安全
- 搞定 WeakHashMap 的工作原理一篇文章就够了!!!
热门文章
- 104. Leetcode 337. 打家劫舍 III (动态规划-打家劫舍)
- Leetcode 94.二叉树的中序遍历 (每日一题 20210712)
- pyecharts应用2 柱状图
- linux下面子目录绑定域名的方法,.htaccess绑定子域名到子目录方法
- LeetCode-二分查找-35. 搜索插入位置
- Matlab中typecast函数由int8转换为int32
- 【问底】严澜:数据挖掘入门——分词
- asynchronous-logging-with-log4j-2--转
- solr服务器的查询过程
- linux shell less 命令---转