第一章 面向对象
第二章 异常
第三章 数组
第四章 常用类
第五章 集合
第六章 IO流
第七章 线程
第八章 反射
第九章 Socket编程

java转向语句之break和continue

 

break语句

使用break这一个单词就可以在java语言中自成一条java语句,break语句的编写很简单,例如“break;”,那么它可以用在哪里呢?首先它可以使用在switch语句当中,用来终止switch语句的执行,这个之前我们用过,这里不再赘述,break语句重点是使用在循环语句当中,用来终止/跳出循环。例如有这样一个业务:从键盘不断的接收用户输入的整数,只要用户输入的数字在[0~100]之间,则将输入的数字累加,一旦用户输入的整数不在[0-100]的范围,则终止循环的执行,并输出计算结果。请看下面的代码:

 

java.util.Scanner scanner = new java.util.Scanner(System.in);
int sum = 0;
while(true){
	System.out.print("请输入[0-100]的整数:");
	int num = scanner.nextInt();
	if(num >= 0 && num <= 100){
		sum += num;
		System.out.println("累加" + num + "成功!");
	}else{
		System.out.println("不在合法范围,无法累加" + num);
		break;
	}
}
System.out.println("最终累加结果 = " + sum);

 

运行效果如下图所示:

 

图6-37:break初步使用

 

通过以上程序我们得知当用户输入的数字不在[0-100]范围内的时候break语句执行,while循环结束了。那么,当循环语句多层嵌套的时候break语句终止的是哪个循环呢?我们来看以下的程序:

 

for(int j = 1; j <= 2; j++){
	for(int i = 1; i <= 10 ; i++){
		if(i == 5){
			break;
		}
		System.out.println("i = " + i);
	}
}

 

运行结果如下所示:

 

图6-38:break终止的是哪个循环

 

分析以上程序,请看下图:

 

图6-39:循环嵌套时,break终止哪个?

 

通过上图的分析,可以得知break语句默认情况下只能终止离它“最近”的“一层”循环。以上的break语句则终止的是内部循环,不影响外部循环的执行。那么break语句可以用来终止指定的循环吗?请看以下代码:

 

first:for(int j = 1; j <= 2; j++){
	for(int i = 1; i <= 10 ; i++){
		if(i == 5){
			break first;
		}
		System.out.println("i = " + i);
	}
}

 

运行结果如下图所示:

 

图6-40:终止指定的循环

 

通过以上程序的测试,我们可以得知当多层循环嵌套的时候,可以给每个循环设置标识,例如:first:for...、second:for...,当某个条件成立时,想终止指定循环的话,可以这样做:break first;或者break second;,这样指定的循环就结束了。

总之,break语句出现在循环当中用来终止循环的执行。例如:运动场上的运动员跑圈儿,跑了一圈又一圈,这显然是循环机制,假设比赛要求跑10圈儿,或者20圈儿,那么当计数器等于10,或者20的时候,循环就结束了,如果中途发生意外呢,例如运动员晕倒了,那么此时在没有达到10圈儿或20圈儿的时候是不是也应该终止此循环的执行,要想让循环结束则执行break语句就可以了。

 

continue语句

continue语句也是单个单词自成一条java语句,例如“continue;”,它和break语句都是用来控制循环的,break语句是用来终止循环的执行,而continue语句则是用来终止当前本次循环,直接进入下一次循环继续执行。请参照以下代码以及运行结果进行对比学习:

 

for(int i = 1; i <= 10; i++){
	if(i == 5){
		break;
	}
	System.out.println("break : i = " + i);
}

System.out.println("----------------------");

for(int i = 1; i <= 10; i++){
	if(i == 5){
		continue;
	}
	System.out.println("continue : i = " + i);
}

 

运行结果如下图所示:

 

图6-41:break和continue对比

 

对以上代码以及执行结果进行分析,请看下图:

 

图6-42:break和continue对比

 

对于以上程序,当“continue;”语句执行的时候,当前本次循环剩下的代码就不再执行了(不再执行下面的输出语句),直接执行“i++”去了,而break就不同了,当以上程序“break;”语句执行之后整个for循环就结束了。

对于break语句有“break first;”这种写法,其实continue语句也是有这种语法机制的,这里就不再赘述了,大家可以自己编写程序测试一下。

对于break和continue语句的区别有这样一个小的现实情景,大家可以借鉴理解一下:某公司销售部销售经理要进行人员招聘,预约了10个应聘者,这10个应聘者在办公室门口长凳上按照一定的次序坐着等待,销售经理一个一个轮流进行面试,当轮到第3个应聘者面试的时候,销售经理突然接到了一通电话,说家里有事儿了,那么此时销售经理就不得不终止今天的面试,此时销售经理执行了break语句,循环结束了,剩下的就不再面试了。那么假设销售经理没有接到这通电话则会继续轮流面试,他为每一个应聘者准备了5个问题,假设轮到第6个应聘者面试,在面试过程中问完第1个问题之后销售经理就知道这人不适合这个岗位,那么此时剩下的4个问题就不再问了(当前本次循环结束),直接对着门口喊了一句:下一个应聘的进来。这个过程就相当于销售经理执行了continue语句。

总之,break用来终止循环,continue用来中断当前本次循环,直接进入下一次循环继续执行。

 

全部教程