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平台下不会出现.

  • 相关阅读:
    Python-24-Django(Model Form、Ajax、上传文件、KindEditor)
    P23-Django-model、Form补充 & 序列化
    P22-Django-Session、CSRF、Form、信号
    21-Python-Django进阶补充篇
    Python-Django进阶
    Python-18-Django 基础篇
    17-前端开发之jQuery
    15-前端开发之JavaScript
    14-前端开发之CSS
    14-前端开发之HTML
  • 原文地址:https://www.cnblogs.com/yyw84/p/1099519.html
Copyright © 2011-2022 走看看