三者在循环中:
return:跳出循环直到代码块结束(跳出当前方法的循环);
break:跳出循环进行循环之后的代码;
continue:跳出当前次循环,进行新的下一次循环.
return
return 关键字并不是专门用于结束循环的,return 语句用于终止函数的执行或退出类的方法,并把控制权返回该方法的调用者。如果这个方法带有返回类型,return 语句就必须返回这个类型的值;如果这个方法没有返回值,可以使用没有表达式的 return 语句。
如果一个方法使用了 return 语句并且后面跟有该方法返回类型的值,那么调用此方法后,所得到的结果为该方法返回的值。
public static int add(int x,int y){
return x+y;//有返回类型,返回方法指定类型的返回值
}
return在循环中:
public static int add(int x){
for (i = 0; i < 5; i++) {
if(i==3){
return i; //用于方法的结束
}
System.out.println(String.format("i=%d",i));
}
//return 之后的语句将不会被执行
System.out.println("return语句之后"+getInfo());
}
break
某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环。此时,可以使用 break 来完成这个功能。
break 用于完全结束一个循环,跳出循环体。不管是哪种循环在循环体中遇到 break,系统将完全结束该循环,开始执行循环之后的代码。
在 Java 中,break 语句有 3 种作用,分别是:在 switch 语句中终止一个语句序列、使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能。
1.使用 break 语句直接强行退出循环(break 不带标签)
例1:
import java.util.Scanner;
/**
功能:有5家衣服专卖店,每家最多购买3件。用户可以选择离开,可以买衣服。最后打印总共买了几件衣服
技能:
1.多重循环
外层循环 5家专卖店内层循环每家3件衣服
2.多重循环中使用break
每家(最多)购买3件 break 当前循环
最多5家专卖店 break 退出外层循环
1.方式1:标签不推荐
2.方式2:符号量 flag
步骤
1.有5家衣服专卖店,每家购买3件
2.有5家衣服专卖店,每家最多购买3件
3.最多5家衣服专卖店,每家最多购买3件
@豆皮没有豆
*/
public class YuFa34 {
private static Scanner inputtext;
public static void main(String[] args) {
inputtext = new Scanner(System.in);
int count = 0;
boolean flag = true;
//外层循环:5家专卖店
for(int i=1;i<=5;i++){
//1.提示信息
System.out.println("顾客进入第"+i+"家专卖店");
//2.在某一家专卖店购买衣服
for(int j=1;j<=3;j++){
//提示是否买衣服
System.out.println("1.购买 2.下一家 3.直接回家");
int select = inputtext.nextInt();
if(select == 1){
//购买衣服
System.out.println("\t顾客在该专卖店购买了第"+j+"件衣服");
//统计数量
count++;
}else if(select ==2){
break; //退出当前循环
}else{
flag = false;
break;
}
}
//3.不管3件退出还是1,2件退出,都会跳到该位置
if(!flag){
break;
}
}
System.out.println("一共购买了"+count+"件衣服");
}
}
2. 使用 break 语句实现 goto 的功能(break 带标签)
有时候,在嵌套很深的循环语句中会发生一些不可预料的事情。此时可能更加希望跳到嵌套的所有循环语句之外。通过添加一些额外的条件判断实现各层循环的检测很不方便。
幸运的是,Java 与 C++ 不同,Java 提供了一种带标签的 break 语句,用于跳出多重嵌套的循环语句。
break 语句可以实现 goto 的功能,并且 Java 定义了 break 语句的一种扩展形式来处理退出嵌套很深的循环这个问题。
通过使用扩展的 break 语句,可以终止执行一个或者几个任意代码块,这些代码块不必是一个循环或一个 switch 语句的一部分。同时这种扩展的 break 语句带有标签,可以明确指定从何处重新开始执行。
break 除了具有 goto 退出深层循环嵌套作用外,还保留了一些程序结构化的特性。
标签 break 语句的通用格式如下:
break label;
label 是标识代码块的标签。当执行这种形式的 break 语句时,控制权被传递出指定的代码块。被加标签的代码块必须包围 break 语句,但是它不需要直接包围 break 的块。也就是说,可以使用一个加标签的 break 语句来退出一系列的嵌套块,但是不能使用 break 语句将控制权传递到不包含 break 语句的代码块。
用标签(label)可以指定一个代码块,标签可以是任何合法有效的 Java 标识符,后跟一个冒号。加上标签的代码块可以作为 break 语句的对象,使程序在加标签的块的结尾继续执行。
例:
public class GotoDemo {
public static void main(String[] args) {
label: for (int i = 0; i < 10; i++) {
for (int j = 0; j < 8; j++) {
System.out.println(j);
if (j % 2 != 0) {
break label;
}
}
}
}
}
以上程序的执行结果为:
0
1
这里的 label 是标签的名称,可以为 Java 语言中任意合法的标识符。标签语句必须和循环匹配使用,使用时书写在对应的循环语句的上面,标签语句以冒号结束。如果需要中断标签语句对应的循环,可以采用 break 后面跟标签名的方式。
如在上面代码中,当 j 为 1 时,“j%2!=0”条件表达式成立,则 label 标签所代表的最外层循环终止。
注意:通常紧跟 break 之后的标签,必须在 break 所在循环的外层循环之前定义才有意义。
continue
有时强迫一个循环提早反复是有用的,也就是,你可能想要继续运行循环,但是要忽略这次重复剩余的循环体的语句,所以 Java 提供了 continue 语句。continue 语句是 break 语句的补充。
与 break 语句一样, 它将中断正常的控制流程。continue 语句将控制转移到最内层循环的首部。
continue 语句是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单来讲,continue 是忽略循环语句的当次循环。
注意:continue 语句只能用在 while 语句、for 语句或者 foreach 语句的循环体之中,在这之外的任何地方使用它都会引起语法错误。
在循环体中使用 continue 语句有两种方式可以带有标签,也可以不带标签。语法格式如下:
continue //不带标签
continue label //带标签,label是标签名
例:
/**
*
*
* @豆皮没有豆
*/
public class YuFa35 {
public static void main(String[] args) {
for (int i = 0; i <10; i++) {
if (i == 3) {
continue;
}
System.out.println("Count is: " + i);
}
}
}
在上述程序代码中,当条件 i==3 的时候执行 continue 语句,continue 语句会终止本次循环,循环体中 continue 之后的语句将不再执行,接着进行下次循环,所以输出结果中没有 3。程序运行结果如下:
例:带标签的 continue 语句示例代码如下:
public static void main(String[] args) {
label1: for (int x = 0; x < 5; x++) {
for (int y = 5; y > 0; y--) {
if (y == x) {
continue label1;
}
System.out.println(x+","+y);
}
}
System.out.println("Game Over!");
}
默认情况下,continue 只会跳出最近的内循环(代码第 3 行的 for 循环),如果要跳出代码第 2 行的外循环,可以为外循环添加一个标签 label1,然后在第 5 行的 continue 语句后面指定这个标签 label1,这样当条件满足执行 continue 语句时,程序就会跳转出外循环。
上一篇:JAVA java学习(37)——————java方法的简单介绍