Java中带标签的 break 和 continue

部署运行你感兴趣的模型镜像

转自:http://blog.youkuaiyun.com/jamesfancy/archive/2006/09/09/1198210.aspx

  Java 中有 goto 关键字,但这个关键字没有任何作用,换句话说,我们不能使用 goto 来进行跳转到某行。实际上,结构化程序设计完全不需要 goto 语句即可完成各种流程,而 goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。

  Java 中同样可以定义标签,使用标识符加冒号 (:) 的形式,如“mylabel:”。不过既然 Java 中的 goto 没有实质性的作用,标签的设计当然就不是为了 goto。

  Java 中的标签是为循环设计的,是为了在多重循环中方便的使用 break 和 coutinue 而设计的。正是由于这个原因,Java 的标签只能定义在三种循环 (for() {}, do{} while(), while() {}) 的开始位置,否则编译器会报告说找不到标签。稍后的例子即可更直观的说明。

  在循环前面加上标签,就好像给循环起了个名字。而后在循环中使用 break 或者 continue 语句的时候,就可以带上这个标签做为参数,指明跳出 (break) 或者继续 (continue) 哪一个循环,如“break mylabel;”、“continue mylabel;”。 

/** */ /**
     * 演示查找过程,使用带标签的 break 和 continue 语句。
     
*/

    
public   void  search() ... {
        
//loop1:
        
// 若在此处定义标签,由于不是其后紧跟循环语句,所以会被勿略掉。
        
// 被忽略掉的标签,如果在 break 或者 continue 语句中用到,编译时不能通过。
        
// 如果没有在 break 或者 continue 中用到则编译可以成功。
        System.out.println("--- Begin Searching ---");
        loop1: 
for (int i = 0; i < row; i++) ...{
            
for (int j = 0; j < col; j++) ...{
                
if (data[i][j] > lookfor) ...{
                    System.out.println(
"--- JUMP ---");
                    
continue loop1; // 想想此处用 break,结果会有什么变化
                }

                
if (data[i][j] == lookfor) ...{
                    System.out.println(
"FOUND: data[" + i + "][" + j + "] = "
                            
+ lookfor);
                    
break loop1; // 想想此处用 return,结果会有什么变化
                }

                System.out
                        .println(
"data[" + i + "][" + j + "] = " + data[i][j]);
            }

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

        System.out.println(
"--- End Searching ---");
    }

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

Java 中,`break` `continue` 是用于控制循环结构的关键字,二者使用方法如下: ### break 的使用方法 - **使用范围**:`break` 可用于 `switch-case` 结构循环结构中 [^3]。 - **在循环结构中的作用**:结束当前循环。例如: ```java for (int i = 0; i < 10; i++) { if (i == 5) { break; // 当 i 等于 5 时,直接结束循环 } System.out.println(i); } ``` - **提前终止循环**:当满足特定条件时,可直接结束循环。如搜索到目标元素后立即退出循环: ```java int[] array = {1, 2, 3, 4, 5}; int target = 3; for (int i = 0; i < array.length; i++) { if (array[i] == target) { System.out.println("找到目标!"); break; // 终止循环 } } ``` - **跳出多层循环**:通过标签标识外层循环,可实现精准控制。示例如下: ```java outerLoop: for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == 2 && j == 2) { break outerLoop; // 直接跳出外层循环 } } } ``` - **在 `switch-case` 中的作用**:退出当前 `case` 分支,避免执行后续 `case` 分支。示例如下: ```java int number = 1; switch (number) { case 1: System.out.println("One"); break; // 退出当前 case 分支 case 2: System.out.println("Two"); break; // 退出当前 case 分支 default: System.out.println("Other"); } ``` ### continue 的使用方法 - **使用范围**:`continue` 只能用于循环结构中 [^3]。 - **在循环结构中的作用**:结束当次循环,即跳过本次循环中 `continue` 语句后面的代码,直接进入下一次循环。示例如下: ```java for (int i = 1; i < 10; i++) { if (i % 4 == 0) { continue; // 当 i 能被 4 整除时,跳过本次循环 } System.out.println(i); } ``` - **在嵌套循环中**:默认跳出包裹此关键字最近的一次循环。示例如下: ```java for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 10; j++) { if (j % 4 == 0) { continue; // 跳出包裹此关键字最近的一次循环 } System.out.print(j); } System.out.println(); } ``` - **结束指定循环**:使用标签可结束指定标识的一层循环结构的当次循环。示例如下: ```java lable: for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 10; j++) { if (j % 4 == 0) { continue lable; // 结束指定标识的一层循环结构的当次循环 } System.out.print(j); } System.out.println(); } ``` 需要注意,在 `break;` `continue;` 之后,不能有别的语句,否则编译不通过 [^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值