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

  • 相关阅读:
    java练习按要求编写Java程序:
    java基础练习编写2个接口
    java基础练习 给定一个正整数m,统计m的位数,分别打印每一位数字,再按照逆序打印出各位数字。
    java泛型(转)
    Java程序设计上机作业1
    java基础练习继承
    java冒泡排序
    java基础作业
    java 加深了解
    java基本代码的解释
  • 原文地址:https://www.cnblogs.com/yyw84/p/1099519.html
Copyright © 2020-2023  润新知