前言:
现时姐妹们对“java中的退出语句”可能比较珍视,姐妹们都需要剖析一些“java中的退出语句”的相关文章。那么小编也在网络上网罗了一些对于“java中的退出语句””的相关文章,希望看官们能喜欢,大家快快来学习一下吧!声明:
本文为牛旦教育原创,头条首发,所有权保留,转载请注明来源。
常规编程中,对于break和continue的应用,最典型的应用场景往往是用在循环控制语句中。
其实,对这两个关键字,它们不只是跳出当前循环和继续下一次循环,还有更多的其它应用场景,本文就来围绕这两个关键字做个进一步探讨。
本文是相对基础的编程学习,如果有读者想从头多快好省的学习Java编程,推荐购买@牛旦教育IT课堂 的这个专栏从头跃:Java从入门到实战(极速版)
下面就来介绍如何全面完整break和continue。
1.break语句
break语句用于从程序块(循环体和代码块)中退出。 有两种形式的break语句:
• 未标记break语句
• 标签break语句
一个没有标记的break语句的例子是:
break;
一个有标记的break语句的例子是:
break label;
我们经常在switch、for循环、while循环和do-while语句中使用未标记的break语句。 它将控制权从switch、for循环、while-loop和do-while语句中转移出来。 在这四种嵌套语句的情况下,如果在内部语句中使用了未标记的break语句,则它仅将控制权转移出内部语句块,而不是转出外部语句。 假设您想要如图所示打印3x3矩阵的下半部分(矩阵对角线及以下的元素):
11
21 22
31 32 33
要仅打印3x3矩阵的下半部分,可以编写以下代码片段:
for(int i = 1; i <= 3; i++) { for(int j = 1; j <= 3; j++) { System.out.print ( i + "" + j); if (i == j) { break; // 退出内循环语句块 } System.out.print("\t"); } System.out.println(); }
11
21 22
31 32 33
break语句已在内部for循环语句中使用。 当外循环计数器(i)的值等于内循环计数器(j)的值时,将执行break语句,并退出内循环。 如果要从内部for循环语句中退出外部for循环语句,则必须使用带标签的break语句。 Java中的标签是任何有效的Java标识符,后跟冒号。 以下是Java中的一些有效标签:
• label1:
• alabel:
• Outer:
• Hello:
• IamALabel:
现在在前面的示例中使用带标签的break语句并查看结果。
outer: // 定义一名为outer的标签 for(int i = 1; i <= 3; i++ ) { for(int j = 1; j <= 3; j++ ) { System.out.print(i + "" + j); if (i == j) { break outer; // 退出外部循环 } System.out.print("\t"); } System.out.println(); } // 外部标签在此结束
前面的代码片段的输出如下:
11
为什么它只打印3x3矩阵的一个元素? 这次你在内部的for循环语句中使用了一个带标签的break语句。 当i == j第一次值为true时,会执行带标签的break语句。 它将控制权转移到已标记为outer的块外。 请注意,外部标签出现在外部for循环语句之前。 因此,与外部标签关联的块是外部for循环语句。 带标签的break语句不仅可以用在switch,for,while和do-while语句中, 相反,它可以用于任何类型的块语句。 以下是标记为break的简单例子:
blockLabel: {//块开始 int i = 10; if (i == 5) { break blockLabel; // 退出blocklabel块 } if (i == 10) { System.out.println("i is not five"); } }//块结束
要记:一个带标记的break语句的重要一点是,与break语句一起使用的标签,必须是使用该标签标记的break语句所在的块标签。 以下代码片段说明了标签break语句的不正确使用:
lab1: { int i = 10; if (i == 10) break lab1; // Ok. lab1 标签可用 } lab2: { int i = 10; if (i == 10) // 编译时错误. lab1 不能用在此处 // 因为此块没有与lab1标记关联 //此块仅能使用lab2标记. break lab1; }2.Continue语句
continue语句只能在for循环、while循环和do-while语句中使用。 有两种形式的continue语句:
• 未标记continue语句
• 已标记continue语句
未标记continue语句示例:
continue ;
已标记continue语句示例:
continue label ;
当在for循环中执行continue语句时,会跳过当前循环体中的其余语句,并执行表达式列表中的表达式。 如下所示,可以使用for语句打印1到10之间的所有奇数整数:
for (int i = 1; i < 10; i += 2) { System.out.println(i); }
在这个for语句中,在表达式列表中将i的值增加2。 可以使用continue语句重写以前的for-loop语句,如下图所示。
表达式i%2返回的值为i除以2的值,且表达式i%2 == 0返回true情况。 在这种情况下,将执行continue语句并跳过最后一条语句System.out.println(i)。 递增语句i++是在continue语句执行之后执行的。前面的代码片段当然不是使用continue语句的最好例子,然而,它的目的是说明它的用法。^_^
当在while循环或do-while循环内执行未标记的continue语句时,会跳过循环中的其余语句,并为下一次迭代而计算条件表达式。 例如,下图2中的代码片段将在while循环内使用continue语句打印1到10之间的所有奇数整数。
在for循环和while循环中使用continue语句的主要区别是控制权转移的地方。 在for循环中,控制转移到表达式列表中,在while循环中将控制转移到条件表达式。 这就是为什么for循环语句不能总是在不修改某些逻辑的情况下转换为while循环语句的原因。
未标记的continue语句总是持续最内层的for循环、while循环和do-while循环。 如果你正在使用嵌套循环语句,则需要使用带标签的continue语句在外部循环中继续。 例如,您可以使用如下所示的continue语句重新编写打印3x3矩阵的下半部分的代码片段:
outer: // 标签outer开始处 for(int i = 1; i <= 3; i++) { for(int j = 1; j <= 3; j++) { System.out.print(i + "" + j); System.out.print("\t"); if (i == j) { System.out.println(); // 换行 continue outer; // 继续下一次的outer循环 } } } //标签 "outer"结束处
补充一点,空语句:
3.Empty语句
一个空的语句本身就是一个分号。 一个空的语句什么都不做。 如果一个空的语句没有做任何事情,为什么要它? 有时候一个语句作为构造语法的一部分是必要的。但是,你可能不需要做任何有意义的事情。 在这种情况下,将使用空语句。 for循环必须有与之相关的语句。 但是,要打印1到10之间的所有整数,可只使用for循环语句的初始化、条件表达式和表达式列表部分实现。 在这种情况下,你没有与for语句关联的语句。 因此,在这种情况下使用空语句,如下所示:
for(int i = 1; i <= 10; System.out.println(i++)) ; // 此分号(;)就是for循环的空语句
有时,使用空语句来避免代码中的双重否定逻辑。 假设noDataFound是一个布尔变量。 可以编写一段代码,如下所示(当然你可以不这样干):
if (noDataFound) ; // 一个空语句 else { // 做些处理 }
前面的if-else语句可以在不使用空语句的情况下这样编写:
if (!noDataFound) { // 做些处理 }
使用哪种代码,是个人选择的事情。 最后,请注意,如果您键入两个或更多分号(只需要一个分号),则不会导致任何错误,因为每个额外的分号都被视为空语句。 例如:
i++; // Ok.没问题,分号式语句的一部分 i++;; // 依然可行,第二个分号被认为是个空语句
如果语句不被允许,则不能使用空语句。 例如,当只允许一个语句时,添加一个额外的空语句会导致错误,最常见的估计就是if语句了。如下面的代码片段所示。 它将两个语句联系在一起:i++;和一个空语句(;),一个if语句,只允许一个语句。
if (i == 10) i++;; //编译时错误.else语句前不能使用两个语句 else i--;
当你有个好习惯,即把条件或循环语句都用一对大括号包围起来,那这错误就能避免了。
最后,给出一个小练习,通过循环和标记break和continue语句实现:
1)挑出100以内的整数的几个奇数;
2)一个数一行,把1到挑出数之间的自然数在一行打印出来。
自己动手玩下试试吧。
留意:我会在留言中给出一个参考答案。
标签: #java中的退出语句 #continuejava #java退出语句