zoukankan      html  css  js  c++  java
  • switch用法

    首先我们要了解:

    switch中文的意思就是转换,break也就是打断的意思

    switch怎么用,其实和if差不多

    switch(变量){

    case 常量 :

    语句块

    break;

    //也可以有多个case

    default :

    语句块

    break;

    }

    括号内只可以使用byte,short ,int,char类型的变量(然而这是JDK1.7之前的事)

    JDK1.7之后还可以支持一种叫String 类型的变量

    现如今已是2018年最新版的就是JDK1.10了

    那么为什么1.7之前只能支持上面的四种呢?

    首先我们要知道一个常识:相同类型的东西才可以去比较

    计算机也是这样

    因为我们case后免跟的是常量,而常量默认是int类型的

    byte,short,char运算时自动提升成int

    那么就变成int类型和int类型比较了

    最后一个int也肯定是可以用的

    先来一个小栗子:

     用if看起来有点麻烦,因为这里只做了1~3的假如这个数为100呢?

    那岂不是要写100if(写个简单的判断,肯定不可能会去写这么多)

    那么来试一下switch吧:

     

    运行结果:

    咱们要来理解一下这个switch到底是怎么判断的,嗯。

    1.得到括号内变量的值,

    然后与第一个case后的常量做等值判断

    值相等运行这个case 冒号后的语句

    遇到break直接跳出循环结束这个switch

    2.接下来也是一样的

    假如第一个case的值不想等

    就将第二个case的值拿去比较

    继续上面值相等的操作

    3.default相当于if中的else

    假如一个case都不想等,就执行default里语句

    default和else一样,可以写可以不写,完全看需求

    我们再看一个小需求,使用switch的另一种方式:

    两种结果

    1.月数正确

     2.月数错误

    其实我们只要理解了break这个关键字

    就可以理解我为什么case连着写了

    switch中假如遇到了一个case,并且值相等,

    就会运行这个case冒号后的语句,

    如果在这个语句后面如果没用break

    就会直接执行后面case冒号后的代码(无论结果是否相等)

    直到遇到一个break时,才跳出(停止)整个switch。

    由于1.3.5.7.8.10.12月都是31天

    我就把case写成一排,前面的case冒号后什么都不写

    只在最后一个case中写到days = 31 ;

    然后在写一个break;

    其实这样的效率是最高的

    假如我们的是1月,第一个case就满足了

    然后就去执行冒号后面发现是空的

    就去找下一个case的冒号后面(因为没遇到break),发现也是空的

    直到找到case 12 这个,把days 变成 31 ,遇到break,然后跳出switch

    30天的也是一样的逻辑。

  • 相关阅读:
    ccf 201604-3 路径解析
    ccf 201609-3 炉石传说
    ccf 201612-3 权限查询
    ccf 201709-3 JSON查询
    ccf 201703-3 Markdown
    POJ 3259 -- Wormholes
    Bellman-Ford 单源最短路径算法
    【oracle】oracle启动和关闭步骤
    【Excel】Excel根据单元格背景色求和
    【Oracle】Oracle时间日期格式
  • 原文地址:https://www.cnblogs.com/menghujava/p/9670943.html
Copyright © 2011-2022 走看看