java常用句型.docx
《java常用句型.docx》由会员分享,可在线阅读,更多相关《java常用句型.docx(12页珍藏版)》请在冰豆网上搜索。
![java常用句型.docx](https://file1.bdocx.com/fileroot1/2023-1/2/84c64498-2394-41a5-9d65-e0c9be7c4bb6/84c64498-2394-41a5-9d65-e0c9be7c4bb61.gif)
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)
statement1;
[else
statement2;]
1.布尔表达式boolean-expression是任意一个返回布尔型数据的达式(这比C、C++的限制要严格)。
2.每个单一的语句后都必须有分号。
3.语句statement1,statement2可以为复合语句,这时要用大括号{}?
起。
建议对单一的语句也用大括号括起,这样程序的可读性强,而且有利于程序的扩充(可以在其中填加新的语句)。
{}外面不加分号。
4.else子句是任选的。
5.若布尔表达式的值为true,则程序执行statement1,否则执行statement2。
6.if-else语句的一种特殊形式为:
if(expression1){
statement1
}elseif(expression2){
statement2
}……
}elseif(expressionM){
statementM
}else{
statementN
}
else子句不能单独作为语句使用,它必须和if配对使用。
else总是与离它最近的if配对。
可以通过使用大括号{}来改变配对关系。
7.举例:
例4.1比较两个数的大小,并按从小到大的次序输出。
publicclassCompareTwo{
publicstaticvoidmain(Stringargs[]){
doubled1=23.4;
doubled2=35.1;
if(d2>=d1)
System.out.println(d2+">="+d1);
else
System.out.println(d1+">="+d2);
}}运行结果为:
C:
\\>javaCompareTwo
35.1>=23.4
例4.2判断某一年是否为闰年。
闰年的条件是符合下面二者之一:
①能被4整除,但不能被100整除;②能被4整除,又能被100整除。
publicclassLeapYear{
publicstaticvoidmain(Stringargs[]){
intyear=1989;//method1
if((year%4==0&&year%100!
=0)||(year%400==0))
System.out.println(year+"isaleapyear.");
else
System.out.println(year+"isnotaleapyear.");
year=2000;//method2
booleanleap;
if(year%4!
=0)
leap=false;
elseif(year%100!
=0)
leap=true;
elseif(year%400!
=0)
leap=false;
else
leap=true;
if(leap==true)
System.out.println(year+"isaleapyear.");
else
System.out.println(year+"isnotaleapyear.");
year=2050;//method3
if(year%4==0){
if(year%100==0){
if(year%400==0)
leap=true;
else
leap=false;
}else
leap=false;
}else
leap=false;
if(leap==true)
System.out.println(year+"isaleapyear.");
else
System.out.println(year+"isnotaleapyear.");
}
}
运行结果为
C:
\\>javaLeapYear
1989isnotaleapyear.
2000isaleapyear.
2050isnotaleapyear.
该例中,方法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子句中的值valueI必须是常量,而且所有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.举例:
例4.3.根据考试成绩的等级打印出百分制分数段。
publicclassGradeLevel{
publicstaticvoidmain(Stringargs[]){
System.out.println("\\n**firstsituation**");
chargrade='C';//normaluse
switch(grade){
case'A':
System.out.println(grade+"is85~100");
break;case'B':
System.out.println(grade+"is70~84");
break;case'C':
System.out.println(grade+"is60~69");
break;case'D':
System.out.println(grade+"is<60");
break;default:
System.out.println("inputerror");
}System.out.println("\\n**secondsituation**");
grade='A';∥createrrorwithoutbreakstatement
switch(grade){
case'A':
System.out.println(grade+"is85~100");
case'B':
System.out.println(grade+"is70~84");
case'C':
System.out.println(grade+"is60~69");
case'D':
System.out.println(grade+"is<60");
default:
System.out.println("inputerror");
}System.out.println("\\n**thirdsituation**");
grade='B';∥severalcasewithsameoperation
switch(grade){
case'A':
case'B':
case'C':
System.out.println(grade+"is>=60");
break;case'D':
System.out.println(grade+"is<60");
break;default:
System.out.println("inputerror");
}
}
}
运行结果为
C:
\\>javaGradeLevel
****firstsituation****
Cis60~69
****secondsituation****
Ais85~100
Ais70~84
Ais60~69
Ais<60
inputerror
****thirdsituation****
Bis>=60
从该例中我们可以看到break语句的作用。
∙break语句
∙1.在switch语中,break语句用来终止switch语句的执行。
使程序switch语句后的第一个语句开始执行。
2.在Java中,可以为每个代码块加一个括号,一个代码块通常用大括号{}括起来的一段代码。
加标号的格式如下:
BlockLabel:
{codeBlock}
break语句的第二种使用情况就是跳出它所指定的块,并从紧?
该块的第一条语句处执行。
其格式为:
breakBlockLabel;
例如:
a:
{……//标记代码块a
b:
{……//标记代码块b
c:
{……//标记代码块c
breakb;
……//willnotbeexecuted
}
……//willnotbeexecuted
}
……//willnotbeexecuted
}
……/executefromhere
}
3.与C、C++不同,Java中没有goto语句来实现任意的跳转,因为goto语句破坏程序的可读性,而且影响编译的优化。
但是从上例可以看出,Java用break来实现goto语句所特有的一些优点。
如果break后所指定的标号不是一个代码块的标号,而是一个?
句,则这时break完全实现goto的功能。
不过应该避免这种方式的使用。
∙返回语句return
∙return语句从当前方法中退出,返回到调用该方法的语句处,句继续程序的执行。
(有关方法的内容,我们将在第六章详细讲)是一个方法)。
返回语句有两种格式:
1.returnexpression
返回一个值给调用该方法的语句,返回值的数据类型必须?
方法声明中的返回值类型一致。
可以使用强制类型转换来使类型一致。
2.return
当方法说明中用void声明返回类型为空时,应使用这种格式,?
不返回任何值。
return语句通常用在一个方法体的最后,以退出该方法并返一个值。
Java中,单独的return语句用在一个方法体的中间时,会产生编译错误,因为这时?
有一些语句执行不到。
但可以通过把return语句嵌入某些语句(如if-else)来使程序在未执?
完方法中的所有语句时退出,例如:
intmethod(intnum){
∥returnnum;∥willcausecompiletimeerror
if(num>0)
returnnum;
…… ∥mayormaynotbeexecuted
∥dependingonthevalueofnum
∙概述
∙循环语句的作用是反复执行一段代码,直到满足终止循环?
条件为止,一个循环一般应包括四部分内容:
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跳转到括号指明的外层循环中,这时的格为
continueouterLable;
例如:
outer:
for(inti=0;i<10;i++){∥外层循环
for(intj=0;j<20;j++){∥内层循环
if(j>i){
……continueouter;
}
……
}
……
}
该例中,当满足j>i的条件时,程序执行完相应的语句后跳转?
外层循环,执行外层循环的迭代语句i++;然后开始下一次循环。
∙循环语句举例
∙例4.4下例分别用while、do-while和for语句实现累计求和。
publicclassSum{
publicstaticvoidmain(Stringargs[]){
System.out.println("\\n**whilestatement**");
intn=10,sum=0;∥initialization
while(n>0){∥termination
sum+=n;∥body
n--;∥iteration
}
System.out.println("sumis"+sum);
System.out.println("\\n**do_whilestatement**");
n=0;∥initialization
sum=0;
do{
sum+=n;∥body
n++;∥iteration
}while(n<=10);∥termination
System.out.println("sumis"+sum);
System.out.println("\\n**forstatement**");
sum=0;
for(inti=1;i<=10;i++){
∥initialization,termination,iteration
sum+=i;
}
System.out.println("sumis"+sum);
}
}
运行结果为:
C:
\\>javaSum
**whilestatement**
sumis55
**do_whilestatement**
sumis55
**forstatement**
sumis55
可以从中来比较这三种循环语句,从而在不同的场合选择合适的语句。
例4.5求100~200间的所有素数
publicclassPrimeNumber{
publicstaticvoidmain(Stringargs[]){
System.out.println("**primenumbersbetween100and200**");
intn=0;
outer:
for(inti=101;i<200;i+=2){∥outerloop
intk=15;∥selectforconvinencefor(intj=2;j<=k;j++){∥innerlop
if(i%j==0)
continueouter;
}
System.out.print(""+i);
n++;∥outputanewline
if(n<10)∥after10numbers
continue;
System.out.println();
n=0;
}
System.out.println();
}
}
运行结果为:
C:
\\>javaPrimeNumber
**primenumbersbetween100and200**
101103107109113127131137139149
151157163167173179181191193197
199
该例通过一个嵌套的for语句来实现。
!
U4§4.3例外处理语句
例外处理语句包括try、catch、finally以及throw语句。
与C、C++相比,例外处理语句是Java所特有的。
我们将在第八章作专门的介绍。
!
U4§4.4注释语?
Java中可以采用三种注释方式:
1∥ 用于单行注释。
注释从∥开始,终止于行尾。
2/*…*/用于多行注释。
注释从/*开始,到*/结束,且这种注释不能互相嵌套。
3/**…*/是Java所特有的doc注释。
它以/**开始,到*/结束。
这种注释主要是
为支持JDK工具javadoc而采用的。
javadoc能识别注释中用标记@标识的一些特殊变量,并把
doc注释加入它所生成的HTML文件。
对javadoc的详细讲述可参见附录。