zoukankan      html  css  js  c++  java
  • switch-case最容易忽视的一点

      switch语句是常用的一种java语法,但是往往最基本的,总是最容易被人们忽略。

      首先,看下switch语句的基本结构:

    switch(表达式){
            case 常量1:
                语句1;
                break;
            case 常量2:
                语句2;
                break;
            … …
            case 常量N:
                语句N;
                break;
            [default:
                语句;
                break;]
         } 

      从结构上很明显,可以看出case和break一一对应,那么,有一个问题:“是否只有case满足的情况下,才会执行内部的语句呢”,这个答案很多人觉得,那肯定的,真的吗?

      假如,满足了一个case,可是没有对应的break,那么,接下来的case内部的语句是否还会继续执行?满足的时候执行,不满足就不执行,真的是这样吗?看一个简单的例子:

    public class SwitchTest {
    
        public static void main(String[] args) {
            testSwitch(1);
        }
    
        private static void testSwitch(int i) {
            switch (i) {
            case 1:
                System.out.println(1);
            case 2:
                System.out.println(2);
                break;
            default:
                System.out.println(3);
            }
        }
    }

      观察代码可以看出,第一个case并没有与之对应的break,那么,输出结果是什么呢?估计很多人觉得很简单啊,答案是:1。

      但是,run一下,输出的结果是:1  2 

      也就是说,第二个case内部的语句也执行了,奇怪吗?刚开始我也觉得很奇怪,于是就只能查找资料,最后得出一个结果:

      swtich中的case并不带有判断功能(也就是说并不是满足执行,不满足就不执行),case只相当于识别标志,遇到了符合的case,swtich内部就会改变该标志,从这个标志点一直往下执行,直到遇到break才会跳出。

      所以上面执行到case 2的break才退出,如果把case 2 的break也删除,答案就是:1 2 3

  • 相关阅读:
    UML--->用例图梳理
    UML--->活动图梳理
    论懂产品对程序员的重要性
    markdown时序图语法
    bootstrap 设置表格固定宽度 内容换行
    gitlab的本地搭建和部署使用
    layer.load的使用
    git fatal: remote origin already exists. 报错解决
    导出csv xls文件数字会自动变科学计数法的解决方式
    git常用命令
  • 原文地址:https://www.cnblogs.com/handsomeye/p/6524643.html
Copyright © 2011-2022 走看看