|
JAVA 的程序流 |
|
作者:客服中心 文章来源:本站原创 点击数: 更新时间:2006-2-24 |
|
因为JSP 的useBean需要用JAVA语言来实现,然后编译成CLASS文件放入TOMCAT的BIN目录下。所以在这里我们一同学习一下JAVA的程序流: 与C、 C++相同,Java程序通过流控制来执行程序流,完成一定任务的语句组成的。语句可以是单一的一条语句(如c=a+b;),也可以复合语句。 下面我们分别来介绍Java中的流控制语句,包括
分支语句
例.判断某一年是否为闰年。 闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除;②能被4整除,又能被100整除。
运行结果为 C:\>java LeapYear 1989 is not a leap year. 2000 is a leap year. 2050 is not a leap year. 该例中,方法1用一个逻辑表达式包含了所有的闰年条件,方法2使用了if-else语句的特殊形式,方法3则通过使用大括号{}对if-else进行匹配来实现闰年的判断。大家可以根据程序来对比这三种方法,体会其中的联系和区别,在不同的场合选用适合的方法。 多分支语句switch switch语句根据表达式的值来执行多个操作中的一个,它的般格式如下: switch (expression){ casevalue1:statement1; break; casevalue2:statement2; break; ………… casevalueN:statemendN; break; [default:defaultStatement;] } 1.表达式expression可以返回任一简单类型的值(如整型、实数型、字符型),多分支语句把表达式返回的值与每个case子句中的值相比。如果匹配成功,则运行该case子句后的语句序列。 2.case子句中的值values必须是常量,而且所有case子句中的值是不同的。 3.default子句是任选的。当表达式的值与任一case子句中的都不匹配时,程序执行default后面的语句。如果表达式的值与任一case子句中的值都不匹配且没有default子句,则程序不作任何操作,而是直接跳出switch语句。 4.break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。因为case子句只是起到一个标号的作用,用来查找匹配的入口,从此处开始执行,对后面的case子句不再进行匹配,而是直接执行其后的语句序列,因此该在每个case分支后,要用break来终止后面的case分支语句的执行。 在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break。 5.case分支中包括多个执行语句时,可以不用大括号{}括起。 6.switch语句的功能可以用if-else来实现,但在某些情况下,使switch语句更简炼,可读性强,而且程序的执行效率提高。 7.举例: 例.根据考试成绩的等级打印出百分制分数段。
运行结果为 C:\>java GradeLevel **** first situation **** C is 60~69 **** second situation **** A is 85~100 A is 70~84 A is 60~69 A is <60 input error **** third situation **** B is >=60 从该例中我们可以看到break语句的作用。 break语句 1.在switch语中,break语句用来终止switch语句的执行。使程序switch语句后的第一个语句开始执行。 2.在Java中,可以为每个代码块加一个括号,一个代码块通常用大括号{}括起来的一段代码。加标号的格式如下: BlockLabel:{codeBlock} break语句的第二种使用情况就是跳出它所指定的块,并从紧挨该块的第一条语句处执行。其格式为: break BlockLabel; 例如: a:{……//标记代码块a b:{……//标记代码块b c:{……//标记代码块c break b; …… //willnotbeexecuted } …… //willnotbeexecuted } …… //willnotbeexecuted } …… /executefromhere } 3.与C、 C++不同,Java中没有goto语句来实现任意的跳转,因为goto语句破坏程序的可读性,而且影响编译的优化。但是从上例可以看出,Java用break来实现goto语句所特有的一些优点。如果break后所指定的标号不是一个代码块的标号,而是一个语句,则这时break完全实现goto的功能。不过应该避免这种方式的使用。 返回语句return return语句从当前方法中退出,返回到调用该方法的语句处,继续程序的执行。返回语句有两种格式: 1.return expression 返回一个值给调用该方法的语句,返回值的数据类型必须用方法声明中的返回值类型一致。可以使用强制类型转换来使类型一致。 2.return 当方法说明中用void声明返回类型为空时,应使用这种格式,不返回任何值。 return语句通常用在一个方法体的最后,以退出该方法并返一个值。Java中,单独的return语句用在一个方法体的中间时,会产生编译错误,因为这时有一些语句执行不到。但 可以通过把return语句嵌入某些语句(如if-else)来使程序在未执行完方法中的所有语句时退出,例如: int method (int num) { ∥ return num; ∥will cause compile time error if (num>0) return num; …… ∥ may or may not be executed ∥depending on the value of num 循环语句 循环语句的作用是反复执行一段代码,直到满足终止循环条件为止,一个循环一般应包括四部分内容: 1.初始化部分(initialization):用来设置循环的一些初始条件,计数器清零等。 2.循环体部分(body):这是反复循环的一段代码,可以是单一一条语句,也可以是复合语句。 3.迭代部分(iteration):这是在当前循环结束,下一次循环开始执行的语句,常常用来使计数器加1或减1。 4.终止部分(termination):通常是一个布尔表达式,每一次循环要对该表达式求值,以验证是否满足循环终止条件。 Java中提供的循环语句有:while语句,do-while语句和for语句,下分别介绍。 while语句 while语句实现"当型"循环,它的一般格式为; [initialization] while (termination){ body; [iteration;] } 1.当布尔表达式(termination)的值为true时,循环执行大括号中语句。并且初始化部分和迭代部分是任选的。 2.while语句首先计算终止条件,当条件满足时,才去执行循环当中的语句。这是"当型"循环的特点。 do-while语句 do-while语句实现"直到型"循环,它的一般格式为: [initialization] do{ body; [iteration;] }while (termination); 1.do-while语句首先执行循环体,然后计算终止条件,若结果为true,则循环执行大括号中的语句,直到布尔表达式的结果为false。 2.与while语句不同的是,do-while语句的循环体至少执行一次,这是"直到型"循环的特点。 for语句 for语句也用来实现"当型"循环,它的一般格式为: for(initialization;termination; iteration){ body; } 1.for语句执行时,首先执行初始化操作,然后判断终止条件否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。 2.可以在for语句的初始化部分声明一个变量,它的作用域为一个for语句。 3.for语句通常用来执行循环次数确定的情况(如对数组元素进行操作),也可以根据循环结束条件执行循环次数不确定的情况。 4.在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。例如: for(i=0,j=10;i<j;i++, j--){ …… } 5.初始化、终止以及迭代部分都可以为空语句,三者均为空的时候,相当于一个无限循环。 continue语句 1.continue语句用来结束本次循环,跳过循环体中下面尚未执的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件判断前,还要先执行迭代 语句。它的格式为: continue; 2.也可以用continue跳转到括号指明的外层循环中,这时的格为 continue outerLable; 例 如 : outer: for( int i=0; i<10; i++ ){ ∥外层循环 for( int j=0; j<20; j++ ){ ∥内层循环 if( j>i ){ …… continue outer; } …… } …… } 该例中,当满足j>i的条件时,程序执行完相应的语句后跳转到外层循环,执行外层循环的迭代语句i++;然后开始下一次循环。 举例 下例分别用while、 do-while和for语句实现累计求和。
运行结果为: C:\>javaSum **whilestatement** sumis55 **do_whilestatement** sumis55 **forstatement** sumis55 可以从中来比较这三种循环语句,从而在不同的场合选择合适的语句。 例4.5求100~200间的所有素数
运行结果为: C:\>java PrimeNumber ** prime numbers between 100 and 200 ** 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 该例通过一个嵌套的for语句来实现。 例外处理语句
注释语 |
||||||
返回上一页 |