1、java常用句型 第四章 流控制概述 与C、C+相同,Java程序通过流控制来执行程序流,完成一定? 个语句组成的。语句可以是单一的一条语句(如c=a+b;),也可以 复合语句。下面我们分别来介绍Java中的流控制语句,包括1.分支语句:if-else,break,switch,return.2.循环语句:while,do-while,for,continue.3.例外处理语句:try-catch-finally,throw最后我们简单介绍一下注释语句。 条件语句if-else if-else语句根据判定条件的真假来执行两种操作中的一种, ?的格式为:if(boolean-expression
2、)statement1;elsestatement2;1.布尔表达式boolean-expression是任意一个返回布尔型数据的 达式(这比C、C+的限制 要严格)。2.每个单一的语句后都必须有分号。3.语句statement1,statement2可以为复合语句,这时要用大括号 ?起。建议对单一的语句 也用大括号括起,这样程序的可读性强,而且有利于程序的扩充( 可以在其中填加新的语句 )。外面不加分号。4.else子句是任选的。5.若布尔表达式的值为true,则程序执行statement1,否则执行sta tement2。6.if-else语句的一种特殊形式为:if(expression1
3、)statement1else if(expression2)statement2else if(expressionM)statementMelsestatementNelse子句不能单独作为语句使用,它必须和if配对使用。else总是与离它最近的if配对 。可以通过使用大括号来改变配对关系。7.举例:例4.1比较两个数的大小,并按从小到大的次序输出。public class CompareTwopublic static void main(Stringargs)double d1=23.4;double d2=35.1;if(d2=d1)System.out.println(d2+=+d
4、1);elseSystem.out.println(d1+=+d2); 运行结果为:C:java CompareTwo35.1=23.4例4.2判断某一年是否为闰年。闰年的条件是符合下面二者之一:能被4整除,但不能被100 整除;能被4整除,又能被 100整除。public class LeapYearpublic static void main(String args)int year=1989;/method1if(year%4=0&year%100!=0)|(year%400=0)System.out.println(year+isaleapyear.);elseSystem.out.
5、println(year+isnotaleapyear.);year=2000;/method2boolean leap;if(year%4!=0)leap=false;else if(year%100!=0)leap=true;else if(year%400!=0)leap=false;elseleap=true;if(leap=true)System.out.println(year+isaleapyear.);elseSystem.out.println(year+isnotaleapyear.);year=2050;/method3if(year%4=0)if(year%100=0)
6、if(year%400=0)leap=true;elseleap=false;elseleap=false;elseleap=false;if(leap=true)System.out.println(year+ is a leap year.);elseSystem.out.println(year+ is not a leap year.);运行结果为C:java LeapYear1989 is not a leap year.2000 is a leap year.2050 is not a leap year.该例中,方法1用一个逻辑表达式包含了所有的闰年条件,方 ?2使用了if-el
7、se语句的特殊 形式,方法3则通过使用大括号对if-else进行匹配来实现闰年的 ?断。大家可以根据程序来 对比这三种方法,体会其中的联系和区别,在不同的场合选用适 ?的方法。 多分支语句switchswitch语句根据表达式的值来执行多个操作中的一个,它的 般格式如下:switch (expression)case value1:statement1;break;case value2:statement2;break;case valueN:statemendN;break;default:defaultStatement;1.表达式expression可以返回任一简单类型的值(如整型、实
8、? 、字符型),多分支语句把 表达式返回的值与每个case子句中的值相比。如果匹配成功,则 ?行该case子句后的语句序 列。2.case子句中的值valueI必须是常量,而且所有case子句中的值 是不同的。3.default子句是任选的。当表达式的值与任一case子句中的? 都不匹配时,程序执行 default后面的语句。如果表达式的值与任一case子句中的值都不 ?配且没有default子句,则程 序不作任何操作,而是直接跳出switch语句。4.break语句用来在执行完一个case分支后,使程序跳出switch语 ?,即终止switch语句的执行 。因为case子句只是起到一个标号的
9、作用,用来查找匹配的入口 ?从此处开始执行,对后面 的case子句不再进行匹配,而是直接执行其后的语句序列,因此 该在每个case分支后,要用 break来终止后面的case分支语句的执行。 在一些特殊情况下,多个不同的case值要执行一组相同的操 ,这时可以不用break。5.case分支中包括多个执行语句时,可以不用大括号括起。6.switch语句的功能可以用if-else来实现,但在某些情况下,使 switch语句更简炼,可读性强 ,而且程序的执行效率提高。7.举例:例4.3.根据考试成绩的等级打印出百分制分数段。public class GradeLevelpublic static
10、void main(String args)System.out.println(n*firstsituation*);char grade=C;/normaluseswitch(grade)case A:System.out.println(grade+ is 85100);break; case B:System.out.println(grade+ is 7084);break; case C:System.out.println(grade+ is 6069);break; case D:System.out.println(grade+ is 60);break; default:S
11、ystem.out.println(input error); System.out.println(n*secondsituation*);grade=A;creat error without break statementswitch(grade)case A:System.out.println(grade+is85100);case B:System.out.println(grade+is7084);case C:System.out.println(grade+is6069);case D:System.out.println(grade+is60);default:System
12、.out.println(inputerror); System.out.println(n*thirdsituation*);grade=B;severalcasewithsameoperationswitch(grade)case A:case B:case C:System.out.println(grade+is=60);break; case D:System.out.println(grade+is60);break; default:System.out.println(inputerror);运行结果为C:java GradeLevel*first situation*C is
13、 6069*second situation*A is 85100A is 7084A is 6069A is 60input error*third situation*B is =60从该例中我们可以看到break语句的作用。 break语句 1.在switch语中,break语句用来终止switch语句的执行。使程序 switch语句后的第一个语句 开始执行。2.在Java中,可以为每个代码块加一个括号,一个代码块通常 用大括号括起来的一段 代码。加标号的格式如下:BlockLabel:codeBlockbreak语句的第二种使用情况就是跳出它所指定的块,并从紧 ?该块的第一条语句处执
14、行。其格式为:break BlockLabel;例如:a:/标记代码块ab:/标记代码块bc:/标记代码块cbreakb;/willnotbeexecuted/willnotbeexecuted/willnotbeexecuted/executefromhere3.与C、C+不同,Java中没有goto语句来实现任意的跳转,因为go to语句破坏程序的可读性 ,而且影响编译的优化。但是从上例可以看出,Java用break来实现g oto语句所特有的一些优点 。如果break后所指定的标号不是一个代码块的标号,而是一个? 句,则这时break完全实现 goto的功能。不过应该避免这种方式的使用。
15、 返回语句return return语句从当前方法中退出,返回到调用该方法的语句处, 句继续程序的执行。(有关方法的内容,我们将在第六章详细讲) 是一个方法)。返回语句有两种格式:1.return expression返回一个值给调用该方法的语句,返回值的数据类型必须? 方法声明中的返回值类型 一致。可以使用强制类型转换来使类型一致。2.return当方法说明中用void声明返回类型为空时,应使用这种格式, ?不返回任何值。return语句通常用在一个方法体的最后,以退出该方法并返 一个值。Java中,单独的 return语句用在一个方法体的中间时,会产生编译错误,因为这时 ?有一些语句执行不
16、到。但 可以通过把return语句嵌入某些语句(如if-else)来使程序在未执? 完方法中的所有语句时退出 ,例如:int method (int num)return num;will cause compile time errorif(num0)return num;may or may not be executeddepending on the value of num 概述 循环语句的作用是反复执行一段代码,直到满足终止循环? 条件为止,一个循环一般 应包括四部分内容:1.初始化部分(initialization):用来设置循环的一些初始条件, 计数器清零等。2.循环体部分(b
17、ody):这是反复循环的一段代码,可以是单一一条语句,也可以是复合语句。 3.迭代部分(iteration):这是在当前循环结束,下一次循环开始执行的语句,常常用来使计 数器加1或减1。4.终止部分(termination):通常是一个布尔表达式,每一次循环 要对该表达式求值,以验证 是否满足循环终止条件。Java中提供的循环语句有:while语句,do-while语句和for语句,下 分别介绍。 while语句 while语句实现当型循环,它的一般格式为;initializationwhile (termination)body;iteration;1.当布尔表达式(termination)
18、的值为true时,循环执行大括号中 语句。并且初始化部分和 迭代部分是任选的。2.while语句首先计算终止条件,当条件满足时,才去执行循环中的语句。这是当型循 环的特点。 do-while语句 do-while语句实现直到型循环,它的一般格式为:initializationdobody;iteration;while (termination);1.do-while语句首先执行循环体,然后计算终止条件,若结果为t rue,则循环执行大括号中的 语句,直到布尔表达式的结果为false。 2.与while语句不同的是,do-while语句的循环体至少执行一次, ?是直到型循环的特点。 for语句
19、 for语句也用来实现当型循环,它的一般格式为:for (initialization;termination;iteration)body;1.for语句执行时,首先执行初始化操作,然后判断终止条件? 否满足,如果满足,则执行循 环体中的语句,最后执行迭代部分。完成一次循环后,重新判断 ?止条件。2.可以在for语句的初始化部分声明一个变量,它的作用域为 ?个for语句。3.for语句通常用来执行循环次数确定的情况(如对数组元素 ?行操作),也可以根据循环 结束条件执行循环次数不确定的情况。4.在初始化部分和迭代部分可以使用逗号语句,来进行多个 ?作。逗号语句是用逗号 分隔的语句序列。例如:
20、for(i=0,j=10;ij;i+,j-)5.初始化、终止以及迭代部分都可以为空语句(但分号不能 ?),三者均为空的时候,相 当于一个无限循环。 continue语句 1.continue语句用来结束本次循环,跳过循环体中下面尚未执 的语句,接着进行终止条 件的判断,以决定是否继续循环。对于for语句,在进行终止条件 ?判断前,还要先执行迭代 语句。它的格式为:continue;2.也可以用continue跳转到括号指明的外层循环中,这时的格为continueouterLable;例如:outer:for(int i=0;i10;i+)外层循环for(int j=0;j20;j+)内层循环i
21、f(ji) continueouter;该例中,当满足ji的条件时,程序执行完相应的语句后跳转 ?外层循环,执行外层循环 的迭代语句i+;然后开始下一次循环。 循环语句举例 例4.4下例分别用while、do-while和for语句实现累计求和。public class Sumpublic static void main(String args)System.out.println(n*while statement*);int n=10,sum=0;initializationwhile(n0)terminationsum+=n;bodyn-;iterationSystem.out.pri
22、ntln(sumis+sum);System.out.println(n*do_whilestatement*);n=0;initializationsum=0;dosum+=n;bodyn+;iterationwhile(n=10);terminationSystem.out.println(sumis+sum);System.out.println(n*forstatement*);sum=0;for(inti=1;i=10;i+)initialization,termination,iterationsum+=i;System.out.println(sumis+sum);运行结果为:C
23、:java Sum*whilestatement*sum is 55*do_while statement*sum is 55*for statement*sum is 55可以从中来比较这三种循环语句,从而在不同的场合选择合适的语句。例4.5求100200间的所有素数public class PrimeNumberpublic static void main(String args)System.out.println(*prime numbers between 100 and 200*);intn=0;outer:for(inti=101;i200;i+=2)outer loopint
24、 k=15;select for convinence for(int j=2;j=k;j+)innerlopif(i%j=0)continue outer;System.out.print(+i);n+;outputanewlineif(n10)after10numberscontinue;System.out.println();n=0;System.out.println();运行结果为:C:java PrimeNumber*prime numbers between 100 and 200*101 103 107 109 113 127 131 137 139 149151 157 1
25、63 167 173 179 181 191 193 197199该例通过一个嵌套的for语句来实现。!U44.3例外处理语句例外处理语句包括try、catch、finally以及throw语句。与C、C+ 相比,例外处理语句是 Java所特有的。我们将在第八章作专门的介绍。!U44.4注释语 ?Java中可以采用三种注释方式:1用于单行注释。注释从开始,终止于行尾。2/*/用于多行注释。注释从/*开始,到*/结束,且这种注释不能互相嵌套。3/*/是Java所特有的doc注释。它以/*开始,到*/结束。这种注释主要是为支持JDK工具javadoc而采用的。javadoc能识别注释中用标记标识的一些特殊变量,并把doc注释加入它所生成的HTML文件。对javadoc的详细讲述可参见附录。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1