第4章 流程控制 Flashcards
流程控制概述
Java是面向对象的编程语言,通过构造多个类之间的关系来完成程序的功能:但是在编写类的时候,主要通过一定的程序流程来实现类中方法的功能。Java的程序流程是由若干条语句组句块或称复合语句。
分支语句
1、条件语句 条件语句根据判定条件的真假来决定执行哪一种操作。 (1)if结构 Java语言中,最简单的条件语句是if结构,采用的格式如下: if(条件) statement; 或者 if(条件) {block} 第一种情况下,在条件为真时,执行一条语句statement;否则跳过statement执行下面的语句。第二种情况下,在条件为真时,执行多条语句组成的代码块block;否则跳过block执行下面的语句。 上述格式中的“条件”为关系表达式或布尔逻辑表达式,其值为布尔值。 (2)if—else结构 Java语言中,较常见的条件语句是if-else结构。采用的格式如下: if(条件) statement1;或{block1} else statement2;或{block2} 在条件为真时,执行语句statement1(或代码块blodk1),然后跳过else和statement2(或代码块block2)执行下面的语句;在条件为假时,跳过语句statement1(或代码块block1)执行else后面的statement2(或代码块block2),然后继续执行下面的语句。 2、多分支语句 Java语言提供了多分支语句swirch。switch语句根据表达式的值从多个分支中选择一个来执行,它的一般格式为: switch(expression){ case value1 :statement1; break; case value2 :statement2; break; ┇ case valueN :statementN; break; [default :defaultStatement;]} 对switch语句说明如下: (1)表达式expression只能返回这几种类型的值:int、byte、short和char。 (2)case子句中的值valueI必须是常量,而且所有case子句中的值应是不同的。 (3)cefault子句是任选的。 (4)break语句用来在执行完一个case分支后,使程序跳出 switch语句的执行。 (5)case分支中包含多条语句(即statementI为一连串语句序列)时,可以不用大括号。 (6)switch语句的功能可以用if-else if结构来实现。
循环语句
一个循环语句一般应包含4部分内容。
(1)初始化部分(initialization);
(2)循环体部分(body);
(3)迭代部分(iteration);
(4)判断部分(termination);
1、while循环
while循环又称“当型”循环,它的一般格式为:
[initialization]
while(termination)
{
body;
[iteration;]
}
说明如下:
(1)首先初始化控制条件,这部分是任选的。(2)当布尔表达式(termination)的值为true时,循环执行大括号中的语句,其中迭代部分是任选的。
(3)while循环首先计算条件就不满足,则大括号中的语句或代码块一次都不会被执行。这是“当型”循环的特点。
(4)while循环通常用于循环次数不确定的情况,但也可以用于循环次数确定的情况。
2、do-while循环
do-while循环又称“直到型”循环,它的一般格式为:
[initialization]
do {
body;
[iteration;]}while(termination);
说明如下:
(1)do-while结构首先执行循环体,然后计算终止条件,若结果为true,则循环执行大括号中的语句或代码块,直到布尔表达式的结果为false。
(2)与while结构不同的是,do-while结构的循环体到少被执行一次,这是“直到型”执行的特点。
3、for循环
for循环的一般格式为:
for(initialization;termination;iteration)
{
body;
}
说明如下:
(1)for循环执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。
(2)可以在for循环的初始化部分声明一个变更,它的作用域为整个for循环。
(3)for循环通常用于循环次数确定的情况,但也可以根据循环结束条件完成循环次数不确定的情况。
(4)在初始化部分和迭代部分可以使用逗号语句来进行多个操作。逗号语句是用逗号分隔的语句序列。
(5)初始化,终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限循环。
跳转语句
1、break语句
break语句是最常用的用法是在switch语句中,通过break语句退出switch语句,使程序从switch结构后面的第一条语句开始执行。
在Java中,还可以用break语句退出循环,并从紧跟该循环结构的第一条语句处开始执行。
2、continue语句
break语句用来退出循环,并从紧跟该循环语句的第一条语句处开始执行;而continue语句则跳过循环体中下面尚未执行的语句,回互循环体的开始继续下一轮的循环。当然,在一一轮循环开始前,要先进行终止条件的判断,以决定是否继续循环,对于for语句,在进行终止条件的判断前,还要先执行迭代语句。
3、return语句
return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:
return expression; return;
return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中。
循环语句与分支语句的嵌套
一个循环体内又可包含另一个完整的循环语句,构成多重循环语句。
循环语句与分支语句可相互嵌套,以实现复杂算法。分支语句的任意一个分支中都可以嵌套一个完整的循环语句,同样循环体中也可以包含完整的分支语句。
递归(recursion)
递归(recusion)是常用的一种解决问题的方法,即把问题逐渐简单化。递归的基本思想是“自己调用自己”,一个使用递归技术的方法将直接或间接地调用自身的方法。利用递归,可以用简单的程序来解决某些复杂的计算问题。
递归结构的主要内容包括两个部分:
(1)定义递归头。
(2)定义如何从同性质的简化问题求得当前问题。
执行递归方法时,首先逐级递归调用展开。
递归结构的优点之一是程序非常简洁,但是递归调用会占作大量的系统堆栈,内存耗用多,在递归调用层次较多时,运算速度较之循环结构慢慢多。