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;
else
	b = -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 语句或者块语句中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值