java学习之break 和 continue
java当中比较特殊的两个关键字:break,continue.从字面意思来看的话break就是打断的意思,而continue就是继续的意思。
这两个关键词用途范围是很明确的:
break:只能用在switch语句或者循环语句当中,除此之外不能单独应用,否则编译的时候会报错:
continue:它的应用范围要比break小一层,有且只能用在循环语句当中。
1、break:
作用:break的作用是结束switch语句,还有跳出当前的循环体,如果有标签的话,则挑出指定标签的循环体。
int a = 1;
switch(a){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
default:
System.out.print("No match");
break;
}
这里的break是指取消对其他选项的判断,跳出switch语句。
break在循环体当中的应用:
int i = 0;
while(i<3){ System.out.println("i is "+i);
break;
i++; }
这个程序的输出结果为0;之后因为有break语句便跳出循环。
程序示例2:
int i = 0;
while(i<3){ break;
System.out.println("i"+i);
i++; }
当我们这样写的时候,编译时会抛出"无法执行到的语句:xxxx“,也就是说,这样写的程序是没有任何意义的,因为System.out.print语句永远都执行不到。这也是java异常处理机制比较好的一方面,提示的信息非常的详细。再循环体内,break;语句之后不能写其他语句,否则编译时就会报错。
程序示例3:
int i = 0;
while(i<3){ break; }
当我们这样写的时候,编译和执行都能够通过,但是显然这样写,没有任何意义。
程序示例4:
int i = 0; break;
此时我们拿程序去编译的时候,会提示你”在switch 或 loop 外中断",编译失败。也就是说break只能出现在switch语句或者循环语句当中。
2、嵌套循环下 break; 语句的具体表现:
for(int i = 0; i <= 3 ; i++){
for(int b = 0; b<=3; b++){
System.out.println("b");
break;
}
}
编译运行此程序,我们可以得到:

而不是:

也就是说break;语句只是跳出当前的循环体,在没有标识标签的情况下。
3、带标签的break表现:
程序代码如下:
class ForFor{
public static void main(String[] args) {
out:for (int i = 0; i<=3 ; i++ ) {
for(int b = 0; b<=3 ; b++){
System.out.println("b");
break out;
}
}
}
}
此时程序输出的结果就只有一个"b"。也就是此时break 跳出指定标签的循环体。
Continue;语句:
作用:跳出当前循环,进行下次循环
continue语句只能用于循环体当中,当用在普通语句当中时:
代码示例1、
class ForFor{
public static void main(String[] args) {
int a = 10;
continue;
}
}
编译时,就会报"continue 在循环外部“。
代码示例2、
class ForFor{
public static void main(String[] args) {
for(int i = 0; i<=13 ; i++){
if(i%2 == 0){
System.out.println(i);
}
continue;
//System.out.println(i++);
}
}
}
输出的结果就是2的倍数,如果continue;之后跟语句System.out.println|(i++),则编译时会提示程序执行不到的编译错误。
代码示例3、
class ForFor{
public static void main(String[] args) {
for(int i = 0; i<=13 ; i++){
if(i%2 == 0){
System.out.println(i);
continue;
}
System.out.println(i++);
}
}
}
但是如果我们把程序改成上述的代码之后,那么此时代码就可以完全执行。因为continue;语句之后没有跟任何语句。同样 break语句 也可以放到if语句当中,这样后面跟其他语句的话就不会再报错了。因为当break或者continue在if语句当中的时候,是被包括在其中,break.continue是被包裹着的,所以不会报错。
程序示例4、
continue语句后也是可以带标签的,比如:
class ForFor{
public static void main(String[] args) {
out:for(int i = 0; i<=13 ; i++){
for(int a = 0; a<=5; a++){
if(i%2 == 0){
System.out.println(i);
continue out;
}
System.out.print(a);
//System.out.println(i*i);
}
}
}
}
当条件满足即(i%2 == 0)的时候,continue就会跳到i++,继续执行。也叫跳出当前循环体,跳到指定标签的循环体,继续循环。
java学习之break 和 continue的更多相关文章
- Java中的break和continue关键字使用总结
java中的break和continue关键字使用总结 一.作用和区别 break的作用是跳出当前循环块(for.while.do while)或程序块(switch).在循环块中的作用是跳出 ...
- JAVA中的break[标签]continue[标签]用法
原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用brea ...
- Java中的break,continue关于标签的用法(转载)
Java的控制循环结构中是没有关键字goto的,这种做法有它的好处,它提高了程序流程控制的可读性,但是也有不好的地方,它降低了程序流程控制的灵活性,所以说,“上帝是公平的”.所以,Java为了弥补这方 ...
- Java中的break和continue以及标签
一.Java中的break,continue,goto 首先break,continue是Java中的关键字,而goto是保留字. 基于goto在c和c++中的鬼畜表现,我觉得goto可能还会长期在J ...
- Java SE之break和continue标签
文是学习网络上的文章时的总结,感谢大家无私的分享. Java没有提供goto功能,可是保留了gotokeyword. 在java中能够使用break标签和continue标签功能实现简版的goto功能 ...
- java中的break与continue
1.两者的作用 break:是跳出当前的循环块或者程序块.循环块有for.do while.while,程序块有switch(){case 1: xxx;break;}在循环体中的作用是跳出正在循环的 ...
- Java中的break与continue区别
break跳出当前循环执行循环下面的程序, 如果break出现在嵌套循环的内层循环, 则break语句只会跳出当前层的循环; 当程序执行到continue时时, 则跳过本次循环程序重新回到循环开始继续 ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习: Break 和 Continue 语句
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- python学习之break和continue在for循环中的使用(案例:打印出10以内的偶数,并且只要前三个偶数)
运行程序,break是整个程序都跳出 continue则表示跳过当前一次循环,然后继续执行循环
随机推荐
- 源码解析之–网络层YTKNetwork
首先 关于网络层最先可能想到的是AFNetworking,或者Swift中的Alamofire,直接使用起来也特别的简单,但是稍复杂的项目如果直接使用就显得不够用了,首先第三方耦合不说,就光散落在各处 ...
- android学习笔记----JNI中的c控制java
面向对象的底层实现 java作为面向对象高级语言,可对现实世界进行建模.和面向过程不同的是面向对象软件的编写不是流程的堆积,而是对业务逻辑的多视角分解和分类.其过程大致为: 1).将知识分解 ...
- Java(Android)线程池 总结
JAVA的Executors源码:(可以看出底层都是通过ThreadPoolExecutor来具体设置的~) public static ExecutorService newCachedTh ...
- 多目标遗传算法 ------ NSGA-II (部分源码解析) 二进制编码的个体解码操作 decode.c
种群解码函数 decode_pop 为包装函数, 核心调用函数为 decode_ind , 对每个个体进行解码. /* Routines to decode the population */ ...
- Winform 程序中dll程序集嵌入exe可执行文件
关于这方面,Google一下有很多方法,参考: http://blog.csdn.net/astonqa/article/details/7300856 但按照以上的方法我并没有成功,于是继续找到了一 ...
- ASP.NET Boilerplate 邮件类使用
在系统我们自定一个 MySettingProvider,并添加到配置集合中,定义一些邮件参数覆盖默认参数,然后通过IOC容器得到SmtpEmailSender实例,调用send方法就实现了,实现代码如 ...
- instanceof的用法②
其实这个问题以前也困扰过我.我个人理解的一个应用场合就是,当你拿到一个对象的引用时(例如参数), 你可能需要判断这个引用真正指向的类.所以你需要从该类继承树的最底层开始,使用instanceof操作符 ...
- SQL数据库安装
安装过程中经常出现失败或者提示,那么久要清楚干净所有的数据在重新安装,步骤如下. SQL2008卸载 一.从控制面板卸载 1)点击计算机右下角“开始”,点击“控制面板” 2)点击“卸载程序”. 卸载与 ...
- QWidget QMainWindow QDialog 三者区别
Qt类是一个提供所需的像全局变量一样的大量不同的标识符的命名空间.通常情况下,你可以忽略这个类.QObject和一些其它类继承了它,所以在这个Qt命名空间中定义的所有标识符通常情况下都可以无限制的使用 ...
- js作用域与作用域链
一直对Js的作用域有点迷糊,今天偶然读到JavaScript权威指南,立马被吸引住了,写的真不错.我看的是第六版本,相当的厚,大概1000多页,Js博大精深,要熟悉精通需要大毅力大功夫. 一:函数作用 ...