3.5 JAVA控制语句
Java程序通过控制语句来执行程序流,完成一定的任务。程序流是由若干个语句组成的,语句可以是单一的一条语句,如c=a+b,也可以是用大括号{}括起来的一个复合语句。Java中的控制语句有以下几类:
◇ 分支语句: if-else, switch
◇ 循环语句: while, do-while, for
◇ 与程序转移有关的跳转语句: break, continue, return
◇ 例外处理语句: try-catch-finally, throw
◇ 注释语句: //,/* */, /** */
3.5.1、分支语句
分支语句提供了一种控制机制,使得程序的执行可以跳过某些语句不执行,而转去执行特定的语句。
1.条件语句 if-else
if(boolean-expression)
statement1;
[else statement2;]
statement1;
[else statement2;]
switch (expression){
case value1 : statement1;
break;
case value2 : statement2;
break;
…………
case valueN : statemendN;
break;
[default : defaultStatement; ]
}
case value1 : statement1;
break;
case value2 : statement2;
break;
…………
case valueN : statemendN;
break;
[default : defaultStatement; ]
}
◇ case子句中的值valueN必须是常量,而且所有case子句中的值应是不同的。
◇ default子句是可选的。
◇break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break)。
3.5.2、 循环语句
循环语句的作用是反复执行一段代码,直到满足终止循环的条件为止。
1.while语句
while (boolean){
statements;
}
statements;
}
do {
statements;
} while (boolean);
statements;
} while (boolean);
for (init expr1; test expr2; increment expr3){
statements;
}
statements;
}
- for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。
- 初始化、终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限循环。
- 在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。
- 3.5.3、 跳转语句1.break语句
◇ 在switch语中,break语句用来终止switch语句的执行。使程序从switch语句后的第一个语句开始执行。
◇ 在Java中,可以为每个代码块加一个括号,一个代码块通常是用大括号{}括起来的一段代码。加标号的格式如下:
BlockLabel: { codeBlock }
break语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。例如:
break BlockLabel;
2.continue语句
continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。它的格式为:
continue;
也可以用continue跳转到括号指明的外层循环中,这时的格式为
continue outerLable;
3.返回语句return
return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:
return expression ;
return;
return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中
例子:public class A {
public static void main(String[] args){
outer_loop:
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
try{
System.out.println("try before if : i="+i+", j="+j);
if((i==0)&&(j==1))
continue;
else if ((i==0)&&(j==2))
continue outer_loop;
else if((i==1)&&(j==0))
break;
else if((i==2)&&(j==1))
break outer_loop;
System.out.println("try after if : i="+i+", j="+j);
}finally{
System.out.print("finally: i="+i+",j="+j+"/n");
}
}
}输出结果:try before if : i=0, j=0
try after if : i=0, j=0
finally: i=0,j=0
try before if : i=0, j=1
finally: i=0,j=1
try before if : i=0, j=2
finally: i=0,j=2
try before if : i=1, j=0
finally: i=1,j=0
try before if : i=2, j=0
try after if : i=2, j=0
finally: i=2,j=0
try before if : i=2, j=1
finally: i=2,j=1