第3章 流程控制
一个计算机程序是由一系列的语句组成的,构成程序的所有语句对应着一个实际问题的一个计算机求解步骤和方法。在计算机程序设计技术中,称解决问题的详细步骤为算法。算法包括解决问题过程中需要执行的操作,以及执行这些操作的顺序。一种计算机语言的程序即用该语言的语句来描述算法。
Java语言虽然是一种面向对象的计算机语言,但在一个局部,例如,方法内、复合语句块内等仍然需要面向过程的一些程序设计思想和方法。结构化程序设计方法是常用的一种面向过程程序设计的原则。采用结构程序设计的方法使得编程人员在进行程序设计时,为了提高程序质量而不能随心所欲地编程,要遵从一些原则。结构化程序设计的基本原则是:尽管现实世界的问题是复杂的、千变万化的,但对应的任意复杂的计算机算法流程,只有三种基本结构:顺序结构、选择结构、循环结构。每种结构是单入口、单出口的。Java语言提供支持结构化程序设计的所有语句。
一般情况下程序运行时,按程序语句书写次序从前往后一条一条地执行语句,正如在前一章中见到的几个程序。流程控制语句可用来改变这个次序,从而控制程序的流程,实现一些复杂的算法。
学习编写计算机程序时,应勤于思考,多动手实验。首先,必须透彻理解所要解决的问题,研究解决问题的方法和步骤。然后,按照结构化程序设计思想和确定的算法,自顶向下、逐步求精地进行程序设计。学习中,要不断积累程序设计经验和教训,融会贯通各种程序设计的技术和方法。
本章介绍Java的流程控制语句:分支语句和循环语句,以及与流程有关的异常和方法(函数)的使用等。
3.1 语句和块
3.1.1 语句
在Java语言中,有下面几类语句:空语句、标识语句、声明语句、表达式语句、分支语句、循环语句、跳转语句、同步语句、异常语句等。有两种基本的语句:表达式语句和声明语句。
1.表达式语句
表达式语句是由表达式加分号构成的语句。例如:
i++; System.out.println("Hello! ");
在Java语言中语句用分号终止。但并不是所有的表达式都可以构成语句,例如表达式a<=b,加分号构成的语句无意义。下面几种类型的表达式可以通过添加分号构成表达式语句:
(1)赋值表达式,包含赋值运算符“=”或复合赋值运算符之一。
(2)++或--前后缀形式。
(3)方法调用(无论它是否有返回值)。
(4)对象创建表达式,用new来创建一个对象的表达式。
2.声明语句
声明语句声明一个变量,并可为其赋初值。声明语句可以出现在任意块内。定义在方法内或块内的局部变量在使用前必须赋初值,或在声明时进行初始化,或在声明后赋值。
3.1.2 块
用一对花括号“{}”将零个或多个语句括起来,就构成一个块(也称复合语句)。在块中允许包含另一个块(块嵌套)。在Java语言中,允许一个块出现在任何单一语句可以出现的地方。回顾前面的内容,可以知道,类体和方法体都是块。
块体现了Java面向对象程序设计的封装概念,在一个块中声明的局部变量的作用域是该变量的声明开始点到最小的包含其声明的块结束。
【例3.1】块的使用。
class UseBlock{ public static void main(String args[]){ int a = 5; a += 8; { // 开始一个块 int b = 6; // 变量b只能在这个块中使用 b = b + a; System.out.println(a + " " + b); } } }
程序运行结果如下:
13 19
在这个程序中,main方法体是一个块,变量a在第3行被声明,在整个程序中都有效;变量b在一个内嵌的块中声明,它只在声明它的块中有效。块嵌套时,外层声明的变量在内存仍然有效,但内存不能再声明与外层变量同名的变量。