zoukankan      html  css  js  c++  java
  • java之switch语句

    /**
    * 关于switch语句:
    * 1、switch语句也属于选择结构,也是分支结构
    * 2、switch语句的语法结构:
    * switch(int或者String类型的字面值或者变量){
    * case int或String类型的字面值或变量:
    * java语句;
    * java语句;
    * java语句;
    * ...
    * break;
    * case int或String类型的字面值或变量:
    * java语句;
    * java语句;
    * java语句;
    * ...
    * break;
    * case int或String类型的字面值或变量:
    * java语句;
    * java语句;
    * java语句;
    * ...
    * break;
    * case int或String类型的字面值或变量:
    * java语句;
    * java语句;
    * java语句;
    * ...
    * break;
    * default :
    * java语句;
    * ...
    * }
    * 3、switch语句的执行原理:
    * switch后面小括号众的"数据"和case后面的"数据"进行一一匹配,匹配成功的分支之行。
    * 按照自上而下的顺序依次匹配
    * 4、匹配成功的分支执行,分支当中最后有break;语句的话,整个switch语句终止
    * 5、匹配成功的分支执行,分支当中没有break;语句的话,直接进入下一个分支执行(不进行匹配)
    * 这种现象被称为case穿透现象。【提供break;语句,可以避免穿透】
    * 6、所有分支都没有匹配成功,当有default的语句,会执行default分支当中的程序
    * 7、switch和case后面只能是int或String类型的数据,不能是探测其他类型。
    * byte,short,char可以自动转换为int类型
    * JDK6,switch和case后面只能探测int
    * JDK7之后包括7版本在哪,switch和case后面可以探测int或String类型的数据
    * 8、case可以合并
    * int i=10;
    * switch(i){
    * case 1: case 2: case 3: case 10:
    * System.out.println("Test code");
    * case 4: case 5:
    * System.out.println("Test coding");
    * case 6:
    * System.out.println("coding");
    *
    * }*/
     1 public class SwitchTest {
     2     public static void main(String args[]){
     3         /*
     4         long a = 10L;
     5         int b = a; //编译报错,不可以自动转换,
     6          */
     7         
     8         /*
     9         long x = 100L;
    10         switch(x){}   //编译报错,损失精度
    11         */
    12         
    13         //解决编译错误
    14         long x = 100L;
    15         switch ((int)x){ }
    16         
    17         byte b = 10;
    18         switch (b){ }
    19 
    20         short s = 10;
    21         switch (s){ }
    22         
    23         char c = 'A';
    24         switch (c){ }
    25         
    26         switch ("zhangshan"){}
    27         
    28         //switch (true){}   //编译报错
    29     }
    30 }

    写一个完整的code:

     1 import java.util.Scanner;
     2 public class SwitchTest {
     3     public static void main(String args[]){
     4         /*
     5         接收用户的输入:0-6分别代表星期日,星期一...星期六*/
     6         Scanner s = new Scanner(System.in);
     7         System.out.println("请输入数字:");
     8         int num = s.nextInt();
     9         switch (num){
    10             case 1:
    11                 System.out.println("星期一");
    12                 break;
    13             case 2:
    14                 System.out.println("星期二");
    15                 break;
    16             case 3:
    17                 System.out.println("星期三");
    18                 break;
    19             case 4:
    20                 System.out.println("星期四");
    21                 break;
    22             case 5:
    23                 System.out.println("星期五");
    24                 break;
    25             case 6:
    26                 System.out.println("星期六");
    27                 break;
    28             case 0:
    29                 System.out.println("星期日");
    30                 break;
    31             default:
    32                 System.out.println("不合法的数字");
    33         }
    34 
    35         //数字穿透
    36         System.out.println("请输入数字:");
    37         int num1 = s.nextInt();
    38         switch (num1){
    39             case 1:
    40                 System.out.println("星期一");
    41             case 2:
    42                 System.out.println("星期二");
    43             case 3:
    44                 System.out.println("星期三");
    45                 break;
    46             case 4:
    47                 System.out.println("星期四");
    48                 break;
    49             case 5:
    50                 System.out.println("星期五");
    51                 break;
    52             case 6:
    53                 System.out.println("星期六");
    54                 break;
    55             case 0:
    56                 System.out.println("星期日");
    57                 break;
    58             default:
    59                 System.out.println("不合法的数字");
    60         }
    61     }
    62 }

    结果: 第二次穿透,输入了一个1,然后打印出了星期一星期二,星期三,因为匹配了1,没有break,所以直接进入2,没有break,直接进入3,3有break,
    所以退出,2和3并没有进行匹配,而是穿透的效果。
  • 相关阅读:
    数学+高精度 ZOJ 2313 Chinese Girls' Amusement
    最短路(Bellman_Ford) POJ 1860 Currency Exchange
    贪心 Gym 100502E Opening Ceremony
    概率 Gym 100502D Dice Game
    判断 Gym 100502K Train Passengers
    BFS POJ 3278 Catch That Cow
    DFS POJ 2362 Square
    DFS ZOJ 1002/HDOJ 1045 Fire Net
    组合数学(全排列)+DFS CSU 1563 Lexicography
    stack UVA 442 Matrix Chain Multiplication
  • 原文地址:https://www.cnblogs.com/peiminer/p/14231349.html
Copyright © 2011-2022 走看看