zoukankan      html  css  js  c++  java
  • [JAVA]你见过这样的switch吗?


    下面这段代码:

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

     }

    }


    你觉得它会输出什么呢? 或者你没有猜错, 它输出了2, 但是如果程序是这样写的呢?

    int i = 20;
    switch(i){
     
    default:
      System.out.println(
    "default");
     
    case 1:
      System.out.println(
    "1");
      
    break;
     
    case 2:
      System.out.println(
    "2");
      
    break;
     
    case 3:
      System.out.println(
    "3");
      
    break;
    }


    我惊讶地发现它竟然输出了如下结果:
    default
    1

    还是break语句的问题, 当程序在case中找不到匹配项的时候会跳转到default语句块执行, 由于default语句块里面没有break的跳出语句, 程序将继续向下执行, 直到遇到一个break, 虽然我们平时我们做项目的时候有严格的编码规范, 一般不会遇到诸如此类的问题, 但是我在面试的时候就遇到了, 而且当时心一慌就答错了, 当然甚至还怀疑这是否能编译通过.


    不过在.NET中强制要求在default的末尾追回break语句, 所以这个问题在.NET平台下不会出现.

  • 相关阅读:
    bootstrap 兼容 IE8
    在IE8的基础上安装IE11
    前台
    dll 库文件下载地址
    年轻
    linux 异常
    Navicat断网时连不上数据库
    jQuery
    破解版 Teamver 安装
    mysql
  • 原文地址:https://www.cnblogs.com/yyw84/p/1099519.html
Copyright © 2011-2022 走看看