1、不带标签break
public class BCR {
public static void main(String[] args) {
int i, j;
for(i = 1; i < 10; i++) {
for(j = 1; j < 10; j++) {
if(j%3 == 0)
break; // 跳出内层循环
System.out.println("j = " + j);
}
System.out.println("循环中断,跳出内层循环:j = " + j);
if(i%3 == 0)
break; // 跳出外层循环
System.out.println("*********i = " + i + "**********");
}
System.out.println("循环中断,跳出内外循环:i = " + i);
}
}
【结果】
break跳出循环,但只能跳出一层循环。
2、带标签break
public class BCR {
public static void main(String[] args) {
int i, j, k;
for(i = 0; i < 2; i++) {
System.out.println("外层循环:i = " + i);
loop: // 标签
for(j = 0; j < 3; j++) {
System.out.println("中层循环:j = " + j);
for(k = 0; k < 10; k++) {
System.out.println("内层循环:k = " + k);
break loop; // 跳出标签
}
}
}
}
}
【结果】
【结果分析】
当程序执行到**break loop;**后,跳出中层循环,执行外层循环剩余代码。
3、不带标签continue
作用:结束本次循环。
public class BCR {
public static void main(String[] args) {
for(int i = 1; i < 5; i++) {
if(i == 3)
continue;
System.out.println("第" + i + "次循环:i = " + i);
}
}
}
【结果】
i = 3时,执行第三次循环,遇到continue路过本次循环,开始执行下次循环。故,结果中没有第三次循环。
4、带标签continue
public class BCR {
public static void main(String[] args) {
int i, j, k;
for(i = 0; i < 2; i++) {
System.out.println("外层循环:i = " + i + "*****************");
loop:
for(j = 0; j < 3; j++) {
System.out.println("中层循环:j = " + j);
for(k = 0; k < 10; k++) {
System.out.println("内层循环:k = " + k);
continue loop;
}
}
}
}
}
【结果】
【结果分析】
程序的流程在遇到continue之后,立即结束本次循环,跳到标签所在循环层次中,进行下一轮循环。本例中,标签在中层循环,遇到continue后,跳到中层循环处,开始执行下一轮的中层循环。
而在带标签的break循环中,跳到标签后并不再运行剩余的中层循环,而是直接开始运行下一次的外层循环。
类型 | 作用 |
---|---|
不带标签continue | 退回最内层循环的开关,并继续执行 |
带标签continue | 到达标签位置,并重新进入紧接在那个标签后面的循环 |
不带标签break | 中断并跳出当前循环 |
带标签break | 中断并跳出标签所指的循环 |
5、return
将不带标签的break示例最内层的break换成return:
public class BCR {
public static void main(String[] args) {
int i, j;
for(i = 1; i < 10; i++) {
for(j = 1; j < 10; j++) {
if(j%3 == 0)
return;
System.out.println("内层循环:j = " + j);
}
System.out.println("循环中断,跳出内层循环:j = " + j);
if(i%3 == 0)
break; // 跳出外层循环
System.out.println("*********i = " + i + "**********");
}
System.out.println("循环中断,跳出内外循环:i = " + i);
}
}
【结果】
return关键词有两方面的用途:一方面指定一个方法返回什么值,另一方面它会导致当前方法退出,并返回那个值。
如果在返回void方法中没有return语句,那么在该方法的结尾处会有一个隐式的return,因此在方法中并非总是必须要有一个return语句。
public class BCR {
public static int test(int a, int b) {
if(a > b)
return 1; // 退出当前方法,并返回1
else if(a < b)
return -1; // 退出当前方法,并返回-1
else
return 0; // 退出当前方法,并返回0
}
public static void main(String[] args) {
System.out.println(test(10, 5));
System.out.println(test(5, 10));
System.out.println(test(5, 5));
}
}
【结果】