黑马程序员————流程控制语句——跳转语句

  ------- 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:结束程序



你可能感兴趣的:(java学习)