zoukankan      html  css  js  c++  java
  • Java 循环中标签的作用

            continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环。在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使程序的结构紊乱,可读性变差。因此Java就发明了一种带标签的continue和break语句,实际上它是一种带限制的专门用于循环的goto语句。

            通常情况下我们使用的continue(或break)语句不带标签,这时也就是默认在当前的循环中执行continue(或break)语句。带标签的循环实际上就是给这个循环起了个名字,当使用使用“continue(或break)+标签”语句时实际上就是在标签所在的循环执行continue(或break)语句。

            现在我们用三个例子来说明带标签的循环。

    1. 不带标签的二重循环

    package javalearning;
    
    public class LableTest {
    	public static void main(String[] args) {
    		for(int i = 0; i < 10; i++){
    			for(int j = 0; j < 10; j++){
    				System.out.print("("+i+","+j+") ");
    			}
    			System.out.println();
    		}
    	}
    }
    

    运行结果

    (0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) (0,8) (0,9)

    (1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) (1,9)

    (2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) (2,8) (2,9)

    (3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (3,8) (3,9)

    (4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) (4,7) (4,8) (4,9)

    (5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) (5,7) (5,8) (5,9)

    (6,0) (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) (6,7) (6,8) (6,9)

    (7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) (7,8) (7,9)

    (8,0) (8,1) (8,2) (8,3) (8,4) (8,5) (8,6) (8,7) (8,8) (8,9)

    (9,0) (9,1) (9,2) (9,3) (9,4) (9,5) (9,6) (9,7) (9,8) (9,9)

    2. 带标签的二重循环,“break+标签”语句

            在这个例子中是个二重for循环,我们给外层循起始处加了标签(也就是说给外层循环起了个名字)“outerCycle”,在内层循环使用“break outerCycle”时,就相当于在outerCycle这个循环中直接使用break语句。

    package javaleanning;
    
    public class LableTest {
    	public static void main(String[] args) {
    		outerCycle:
    		for(int i = 0; i < 10; i++){
    			for(int j = 0; j < 10; j++){
    				if(j == 5){
    					break outerCycle;
    				}
    				System.out.print("("+i+","+j+") ");
    			}
    			System.out.println();
    		}
    	}
    }
    

    运行结果

    (0,0) (0,1) (0,2) (0,3) (0,4)

    3. 带标签的二重循环,“continue+标签”语句

            在这个例子中是个二重for循环,我们给外层循起始处加了标签(也就是说给外层循环起了个名字)“outerCycle”,在内层循环使用“continue outerCycle”时,就相当于在outerCycle这个循环中直接使用continue语句。

     

    package javaleanning;
    
    public class LableTest {
    	public static void main(String[] args) {
    		outerCycle:
    		for(int i = 0; i < 10; i++){
    			for(int j = 0; j < 10; j++){
    				if(j == 5){
    					continue outerCycle;
    				}
    				System.out.print("("+i+","+j+") ");
    			}
    			System.out.println();
    		}
    	}
    }
    

    运行结果

    (0,0) (0,1) (0,2) (0,3) (0,4) (1,0) (1,1) (1,2) (1,3) (1,4) (2,0) (2,1) (2,2) (2,3) (2,4) (3,0) (3,1) (3,2) (3,3) (3,4) (4,0) (4,1) (4,2) (4,3) (4,4) (5,0) (5,1) (5,2) (5,3) (5,4) (6,0) (6,1) (6,2) (6,3) (6,4) (7,0) (7,1) (7,2) (7,3) (7,4) (8,0) (8,1) (8,2) (8,3) (8,4) (9,0) (9,1) (9,2) (9,3) (9,4)

            注意:实际运行结果全部在一行显示(即没有执行换行语句),现在这样的显示结果仅仅是出于排版的原因

  • 相关阅读:
    [三]JavaIO之IO体系类整体设计思路 流的概念以及四大基础分类
    [二] JavaIO之File详解 以及FileSystem WinNTFileSystem简介
    [一]FileDescriptor文件描述符 标准输入输出错误 文件描述符
    [零] JavaIO入门简介 程序设计语言 为什么需要IO库
    装饰器模式 Decorator 结构型 设计模式 (十)
    适配器模式 adapter 结构型 设计模式(九)
    layui 鼠标悬停单元格显示全部
    mysql 日期总结
    区域块路由与全局路由兼容,双重路由
    JS-SDK相关参考
  • 原文地址:https://www.cnblogs.com/nullzx/p/5590028.html
Copyright © 2011-2022 走看看