zoukankan      html  css  js  c++  java
  • continue、break与goto语句

    1、含有continue与break的switch在for循环中的用法

    public class SwitchTest {
    
    	public static void p(Object o) {
    		System.out.println(o);
    	}
    
    	public static void main(String[] args) {
    		int sum = 0;
    		for (int i = 1; i < 5; i++, p("执行迭代后,i = " + i)) {
    			p("执行循环前,i = " + i + ",sum = " + sum);
    			switch (i) {
    			case 1:
    				sum = sum + 2;
    			case 2:
    				sum = sum + 4;
    				p("continue跳出switch,中断当前循环,sum = " + sum);
    				continue;
    			case 3:
    				sum = sum + 16;
    				p("break跳出switch,sum = " + sum);
    				break;
    			default:
    				sum = sum + 4;
    				p("不匹配任何case后,i = " + i + ",sum = " + sum);
    			}
    			p("继续执行当前循环,i = " + i);
    		}
    		p("for循环执行结束,sum = " + sum);
    	}
    
    }
    

      输出:

    执行循环前,i = 1,sum = 0
    continue跳出switch,中断当前循环,sum = 6
    执行迭代后,i = 2
    执行循环前,i = 2,sum = 6
    continue跳出switch,中断当前循环,sum = 10
    执行迭代后,i = 3
    执行循环前,i = 3,sum = 10
    break跳出switch,sum = 26
    继续执行当前循环,i = 3
    执行迭代后,i = 4
    执行循环前,i = 4,sum = 26
    不匹配任何case后,i = 4,sum = 30
    继续执行当前循环,i = 4
    执行迭代后,i = 5
    for循环执行结束,sum = 30

    分析:continue跳出switch,中断当前循环,然后执行i++,进入下一次循环;break跳出switch,继续执行当前循环。然后执行i++。进入下一次循环。

    2、goto语句

    public class GotoTest {
    
    	public static void p(Object o) {
    		System.out.println(o);
    	}
    
    	public static void main(String[] args) {
    		int j = 0;
    		outer: for (int i = 0;; i++, p("for外迭代后,i=" + i)) {
    			inner: for (; j < 10; j++, p("for内迭代后,j = " + j)) {
    				p("执行for内当前循环前,i = " + i + ", j = " + j);
    				if (j == 2) {
    					p("continue中断for内当前循环");
    					continue;
    				}
    				if (j == 3) {
    					j++;
    					p("break中断并跳出for内当前循环,执行j++,j=" + j);
    					break;
    				}
    				if (j == 7) {
    					j++;
    					p("continue outer中断for内当前循环并跳转到outer的位置,重新进入outer所指的循环,执行j++,j=" + j);
    					continue outer;
    				}
    				if (j == 8) {
    					p("break outer中断for内当前循环并跳出outer所指的循环");
    					break outer;
    				}
    				for (int k = 0; k < 5; k++) {
    					if (k == 3) {
    						p("continue inner中断for内当前循环并跳转到inner位置,重新进入inner所指的循环");
    						continue inner;
    					}
    				}
    				p("继续执行for内当前循环,i=" + i + ",j=" + j);
    			}
    			p("继续执行for外当前循环,i=" + i);
    		}
    		p("for外与for内循环执行结束");
    	}
    
    }
    

      输出:

    执行for内当前循环前,i = 0, j = 0
    continue inner中断for内当前循环并跳转到inner位置,重新进入inner所指的循环
    for内迭代后,j = 1
    执行for内当前循环前,i = 0, j = 1
    continue inner中断for内当前循环并跳转到inner位置,重新进入inner所指的循环
    for内迭代后,j = 2
    执行for内当前循环前,i = 0, j = 2
    continue中断for内当前循环
    for内迭代后,j = 3
    执行for内当前循环前,i = 0, j = 3
    break中断并跳出for内当前循环,执行j++,j=4
    继续执行for外当前循环,i=0
    for外迭代后,i=1
    执行for内当前循环前,i = 1, j = 4
    continue inner中断for内当前循环并跳转到inner位置,重新进入inner所指的循环
    for内迭代后,j = 5
    执行for内当前循环前,i = 1, j = 5
    continue inner中断for内当前循环并跳转到inner位置,重新进入inner所指的循环
    for内迭代后,j = 6
    执行for内当前循环前,i = 1, j = 6
    continue inner中断for内当前循环并跳转到inner位置,重新进入inner所指的循环
    for内迭代后,j = 7
    执行for内当前循环前,i = 1, j = 7
    continue outer中断for内当前循环并跳转到outer的位置,重新进入outer所指的循环,执行j++,j=8
    for外迭代后,i=2
    执行for内当前循环前,i = 2, j = 8
    break outer中断for内当前循环并跳出outer所指的循环
    for外与for内循环执行结束

    分析:continue中断当前循环,执行迭代,进入下一次循环;break中断并跳出当前循环;带标签的continue中断当前循环并跳转到标签的位置,执行迭代,重新进入标签后的循环;带标签的break中断当前循环并跳出标签所指的循环。

    重点:在java里需要使用标签的唯一理由就是因为有循环嵌套存在,且想从多层嵌套中break或continue。

  • 相关阅读:
    spring mvc 详细配置
    eclipse PermGen space解决方案
    JDK环境变量详细讲解
    Linux 中如何卸载已安装的软件
    Struts2工作原理
    HashMap的工作原理深入再深入
    Session的工作原理
    什么办法可以替代distinct
    脚踏实地才能仰望星空
    Ubuntu 进阶命令——长期不定时更新
  • 原文地址:https://www.cnblogs.com/lirun/p/11678991.html
Copyright © 2011-2022 走看看