第三章 程序流程控制

一.控制流程简介:控制流程是所有编程语言的基础部分,Java自然也不例外。在本章中,我们将讨论Java语言的控制结构,包括选择和循环。本章讨论的主题包括布尔逻辑、if/else语句、switch语句、for循环、while和do/while循环。
二.流程控制
所有示例程序中,都声明有一个带有main()方法的公用类。这些程序从main()方法的第一条语句开始执行,随后一条一条地执行后续的语句,直到到达程序的终点——main()方法的末尾。
然而,在程序设计时,我们经常需要改变程序的控制流程,也就是语句的执行顺序。有三种基本技术可以改变程序的控制流程:
 调用方法。调用方法将导致控制流程离开当前方法,转移到被调用的方法。例如,当我们调用println()方法时,控制流程离开main(),转到println(),并且在println()方法执行完成时返回main()方法。我们将在第五章《方法》中详细讨论方法。
 选择。Java中有两种做出选择的机制:if/else语句和switch语句。三目运算符也可以用于选择,但是它通常只是if/else的一个简写版本。
 循环。Java中有三种循环语句:for循环、while循环、do/while循环。
选择和循环语句之所以被称为控制结构,是因为我们可以用它们来控制程序流程。
三.布尔逻辑
布尔逻辑指将两到多个布尔表达式组合为单个布尔表达式。在组合布尔表达式时,有四.种类型的逻辑:
1.和。只有在组合表达式的每个部分都为真的时,组合表达式才会为真。
2.或。只要一个组合表达式中有一个部分为真,组合表达式就会为真。
3.异或。如果一个组合表达式中有一个部分为真,而另一个部分为假,那么组合表达式就为真。
4.非。对一个布尔表达式取反。
五、布尔运算符
java中可用的逻辑运算符
在这里插入图片描述
逻辑和运算符有两种形式:&和&&。二者的不同之处在于,当第一个布尔表达式为假时,&&运算符会短路。
逻辑或运算符也有两种形式:|和||。如果第一个布尔表达式为true,那么||运算符就会短路。也就是说,如果第一个表达式为true,第二个表达式就不会被计算,整个表达式为true。
逻辑非运算符"!"可以放在任何布尔表达式或变量的开头。

四. 选择语句
Java语言中的选择语句与C语言中基本相同,包括if语句、if/else语句和switch语句三种。
if语句:一个if语句由一个后跟一到多个语句的布尔表达式组成,其语法形式如下:
if(布尔表达式) {
//如果布尔表达式为true,就执行的语句
}
如果圆括号中的布尔表达式为true,就执行大括号中的语句。如果布尔表达式为false,那么就跳过大括号中的语句。在布尔表达式为false的情况下,控制流程将跳转到大括号之下的语句。
if/else语句;
一个if语句后可以跟上一个可选的else语句,用于在布尔表达式为false时执行。if/else语句的语法形式如下:
if(布尔表达式) {
//当布尔表达式为true时执行
}
else {
//当布尔表达式为false时执行
}
通过使用if/else语句,我们可以根据布尔表达式的值,确保要么是if块要么是else块被执行。

else块也可以包含另一个if语句,这样就创建了一系列if/else语句,但是只有一个if代码块被执行。语法形式类似如下格式:
if(布尔表达式) {
}
else if(布尔表达式) {
}
else if(布尔表达式) {
}
//等等,直到
else {
}
当使用如上格式的if/else语句时,最后的else块是可选的。
switch语句:
switch语句允许变量与多个值进行相等性检测,每个值被一个case语句语句调用和检测。一个switch语句的语法一般是如下形式:
switch(变量){
case 值 :
//语句
break; //optional
case 值 :
//语句
break; //可选
//可以有很多case语句
default : //可选
//语句
}
如下的规则适用于switch语句:
 switch语句中检测的变量只能是32位或更小的整数值,也就是说只能是byte、short、int和char类型(注:JDK7.0以后,变量可以是String类型)。
 在一个switch语句中可以有很多case语句。每个case后跟一个用于比较的值和一个冒号。
 case后的值必须是与switch中的变量相同的数据类型,并且必须是常量或字面量。
 当变量的值等于case后的值时,该case语句后的语句开始执行,直到遇到break语句。
 当遇到break语句时,switch语句结束,控制流程跳转到该switch语句的下一行。
 并不是所有case语句中需要包含一个break语句。如果没有break语句,控制流程继续执行到下一个case语句,直到遇到break语句。
 一个switch语句可以有一个可选的default条件,一般出现在switch语句的末尾。如果所有case条件都是false,那么default条件可以用于执行某种任务。在default条件中不需要break语句。
五.循环语句
while语句:
while循环是一种允许重复执行某项任务的控制结构,其语法形式为:
while(布尔表达式) {
//语句
}
当程序流程执行到一个while循环时,首先检测布尔表达式。如果该布尔表达式为true,就执行循环体内的语句。控制流程然后又回到布尔表达式,再次检测。如果表达式还是为true,就再次执行循环体内的语句。这种处理过程一直重复,直到布尔表达式为false为止。
do/while语句;
while循环是一种允许重复执行某项任务的控制结构,其语法形式为:
while(布尔表达式) {
//语句
}
当程序流程执行到一个while循环时,首先检测布尔表达式。如果该布尔表达式为true,就执行循环体内的语句。控制流程然后又回到布尔表达式,再次检测。如果表达式还是为true,就再次执行循环体内的语句。这种处理过程一直重复,直到布尔表达式为false为止。
注意;do/while语句末尾紧跟在布尔表达式后的分号很容易忘掉。
for语句:
for循环是一种允许我们编写一个执行指定次数循环的控制结构,其语法形式如下:
for(初始化; 布尔表达式; 更新) {
//语句
}
如下是for循环中的控制流程:

  1. 初始化步骤首先执行,而且仅执行一次。这个步骤允许我们声明并初始化任何循环控制变量。这个部分不是必须的,可以留为空白,但是分号必须有。
  2. 下一步,计算布尔表达式。如果表达式为true,循环体就被执行;如果为false,循环体就不执行,控制流程跳到for循环外的下一条语句。
  3. 在for循环体执行之后,控制流程跳回更新语句。这条语句允许我们更新任何循环控制变量。该语句可以留为空白,但是在布尔表达式后必须有一个分号。
  4. 布尔表达式现在再次被计算。如果表达式为true,循环执行,过程重复(先是循环体,然后是更新步骤,然后是布尔表达式)。在布尔表达式为false后,for循环终止。for循环一个比较好的功能是我们可以通过查看for声明知道循环会重复多少次。
    如果我们想让i在for循环外有作用域,我们需要在循环外对它进行声明。例如,我们可以将循环的开头变为如下代码:
    int i;
    for(i = 1; i <= x; i++)
    现在,变量i可以用在for循环之后,其值为x+1。
    六、跳转语句
    break:break关键字可以用于任何循环控制结构,从而使循环立即终止。当执行流程遇到break语句时,不管循环计算器或者布尔表达式的值是什么,控制流程都会跳到循环后的下一条语句。break关键字通常用在while无限循环中,或者至少直到一个问题发生时。
    cintinue语句:
    continue关键字可以用在任何循环控制结构中,它将导致循环立即跳到循环的下一个迭代中。
     在for循环中,continue关键字将导致控制流程立即跳到更新语句。
     在while或do/while循环中,控制流程立即跳到布尔表达式。
    在Java语言中,不提倡过度使用break和continue语句。Java语言中出现这两个关键字主要是因为二者是C和C++中用到的。它们有一定用途,特别是break关键字。但是,在很多情况下,我们可以通过重新设计代码,来避免使用break或continue。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值