------- android培训、java培训、期待与您交流! ----------
流程控制语句离不开跳转语句。
之所以叫做跳转语句,是因为java中可以通过跳转语句使程序摆脱顺序执行转移到其他部分。
本文要介绍的跳转语句有break,continue,和return。
(一)break语句
在switch语句中,我们已经接触了break语句,它使得程序switch语句,而不是顺序的执行后面的case中的程序。
而在循环语句中,在有些情况下,希望循环体还没有完全结束的时候就跳出循环体,执行循环体后面的语句,
就可以使用break语句直接跳出循环,忽略循环体的任何其他语句和循环控制条件。在循环中遇到break时,循环终止,程序从循环后面的语句顺序执行。
循环语句中,break语句有两种使用方式:一种是不带标号的break语句,一种是带标号的break语句
1、不带标号的break语句
当break语句不带标号单独使用时,如果是在一个块中,则要调过本块余下的所有语句,转到块尾,执行其后的语句。比如在switch语句中使用break可以跳出switch语句,如果使用在循环中,则表示不再执行余下的循环体语句,即放弃执行当前循环,继续执行循环外的下一条语句。
如果break语句出现在嵌套循环中的内层循环,则break语句智慧跳出当前层的循环。
例:输出40以内的全部素数,代码如下
int x,j;
for(int i=1;x<=40;i++){
for(int j=2;j<=i/2;j++){
//如果i能被2~i/2中的任何一个整数整除,则结束内层循环
if(i%j==0)
break;
}
if(j>i/2)//没有被2~i/2中的任何一个整数整除
System.out.println(i+"是素数");
}
在这个例子中,如果i%j的值等于0,表示i能被2到i/2中的任何一个整数整除,就退出内层循环,进行外层的下一次循环。
2、带标号的break语句
不带标号的break语句只终止执行包含它的最小程序块,而有些时候我们希望它能终止外层的程序块,用代标号的break语句就可以实现这种功能。
它能使程序跳出标签指示的循环结构。
例:int i, j = 0,k = 0,h;
label 1: for(i = 0;i<100;i++,j+=2){
lable2:switch(i%2){
case 1:
h =1;
break;
default:
h = 0;
break;
}
if(i==50)
break label1:
}
System.out.println("i="+i);
该例程序执行后判断i的值,如果i是奇数,则h为1,如果i为偶数,则h为0.switch语句中的break知识
跳出switch语句本身,并没有跳出for循环。当i的值增加到50时,进入if语句块,执行的结果是跳出label1
标记的for语句块,接下来输出i的值。
(二)continue语句
在循环中,我们有时候需要挑选某些循环来执行,而忽略另外一些执行,那么这个功能就需要用continue语句来完成。
continue语句的作用就是结束本次循环,将循环体剩余的部分跳过,然后再进行下一次循环的判断。
continue语句也有两种使用形式,带标号的continue语句和不带标号的continue语句。
1、不带标号的continue语句
在while和do...while循环中,不带标号的continue语句会使流程跳转至判断条件语句,执行下一轮循环;
在for循环中,不带标号的continue语句会跳转至控制条件语句,计算并修改循环变量后再判断循环条件,执
行下一轮循环。
例:求0-100之间能被4整除的数。由于结果可能会恩多,要求每打印5个就换行。
int n = 0;
for(int i = 0;x<=100;x++){
if(i%4!=0)
continue;//不能被4整除,就结束本次循环,继续下次循环
n++;
if(n%5==0){
System.out.println(i+"\t");
System.out.println();
}
else{
System.out.println(i+"\t");
}
}
该例使用一个for循环,循环100次,为了打印能被4整除的数,在for循环里定义了条件,如果不能被4整除,
就跳出本次循环,进行下次循环。
2、带标号的continue语句
格式与break带标号的格式一样,都是给一个语句块单独命名,可以直接使continue跳出该标号
表示的语句块,例如上面的例子可以写成:
int n = 0;
label:for(int i = 0;x<=100;x++){
if(i%4!=0)
continue label;//不能被4整除,就结束label代表的本次循环,继续下次循环
n++;
if(n%5==0){
System.out.println(i+"\t");
System.out.println();
}
else{
System.out.println(i+"\t");
}
}
总结:continue语句和break语句的区别就在于:前者是放弃本次循环,进入到下一次循环,而后者是彻底退出循环。
对于不带标号的continue语句和break语句来说,一般只能跳出当前所在的循环,但对于一个复杂的多层循环来说,
很可能有时候需要退出其中的某一层循环,这时候带标号的continue语句和break语句就很有用处了,可以用它们退出
任意层次的循环。
(三)return 语句
在循环语句中,有时候我们希望程序满足了某个条件就跳出整个程序,这时候显然continue语句和break语句都无法满足需求,这时候就考虑用return语句。
return确切的说不是用来循环的,而是用来结束方法的,也是流程控制跳转语句,只不过是跳出整个程序。
例:从客户端往服务器上传图片文件,如果不是jpg格式的就结束程序
//创建键盘录入读取流,并加入缓冲区以提高效率:
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//用键盘录入接收要上传的文件的路径,并封装成File对象:
File file = null;
String line = null;
try{
while((line=bufr.readLine())!=null){
//需要给键盘录入定义结束符:
if("over".equals(line))
break;
file = new File(line);
if(!(line.endsWith(".jpg"))){
System.out.println("只能上传jpg格式的图片!");
clientSocket.close();
return;
}
}
}
catch(IOException e){
System.out.println(e.toString());
}
总结:break:跳出循环
continue:跳出本次循环,继续进行下次循环
return:结束程序