Java基础switch01

简介: Java基础switch01

switch语句:

  • 1、switch语句也是选择语句,也可以叫做分支语句。
  • 2、switch语句的语法格式


switch(值){

  case 值1:

   java语句;

   java语句;...

   break;

  case 值2:

   java语句;

   java语句;...

   break;

  case 值3:

   java语句;

   java语句;...

   break;

  default:

   java语句;

  }


以上是一个完整的switch语句:

其中:break;语句不是必须的。default分支也不是必须的。


switch语句支持的值有哪些?


支持int类型以及String类型。

但一定要注意JDK的版本,JDK8之前不支持String类型,只支持int。

在JDK8之后,switch语句开始支持字符串String类型。

switch语句本质上是只支持int和String,但是byte,short,char也可以

使用在switch语句当中,因为byte short char可以进行自动类型转换。

switch语句中“值”与“值1”、“值2”比较的时候会使用“==”进行比较。

3、switch语句的执行原理


拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,

然后遇到"break;"语句,switch语句就结束了。

如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,

则执行该分支中的java语句,然后遇到break;语句,switch结束。

注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case

穿透现象。

4、匹配成功的分支执行,分支当中最后有“break”语句的话,整个Switch语句终止


5、匹配成功的分支执行,分支当中没有“break”语句的话,直接进入下一个分支执行(不进行匹配)

这种现象被称为case穿透现象。【提供break;语句可以避免穿透】


6、所有分支都没有匹配成功,当有default的语句话,会执行default分支当中的程序


7、switch后面和case后面只能是int后者String类型的数据,不能是其它类型


当然byte,short,char也可以直接写到switch和case后面,因为它们可以进行自动类型转换

byte,short,char可以自动转换成int类型

JDK6的,switch和case后面只能是int类型

JDK7之后包括7版本在内,引入新特性

8、case可以合并:


int i = 10;
      switch(i){
        case 1 ;case 2 ;case 3; case 10:
            Syetem.out.println("Test Code!");
      } 


public class SwitchTest01{
  public static void main(String[] args){
    /*
    // switch只支持int和String类型。
    // 错误: 不兼容的类型: 从long转换到int可能会有损失
    long x = 100L;
    switch((int)x){
      case x:
      System.out.println("就是b");
      break;
    }
    */
    /*
    byte a = 10;
    switch(a){
      case a :
      System.out.println("就是a");
      break;
    }
    */
    /*
    short s = 100;
    switch(s)
    }
    */
    /*
    char c = 'a';
    switch(c){
    }
    */
      /*
      //switch也支持字符串String类型。
    String username = "zhangsan";
    switch(username){
      case "username" :
      System.out.println("switch语句支持String类型!");
    }
    */
    //接受用户的输入:
      //1 表示星期一
        //2 表示星期二
        //3 表示星期三
      //...
    //7 表示星期日
    //创建键盘扫描器对象
    /* java.util.Scanner  s = new java.util.Scanner(System.in);
    System.out.print("请输入数字:");
    int num = s.nextInt();//接收用户键盘输入的值
    switch(num){
      case 1 :  case 10 :
          System.out.println("星期一");
            break;
        case 2 :
          System.out.println("星期二");
        case 3 :
          System.out.println("星期三");
        case 4 :
          System.out.println("星期四");
        case 5 :
          System.out.println("星期五");
        case 6 :
          System.out.println("星期六");
        case 7 :
          System.out.println("星期七");
        default :
             System.out.println("你输入的星期有误!");
    } */
    /* String username = "zhangsan";
    switch(username){
        case "zhangsan" :
            System.out.println("我就是法外狂徒张三!");
          break;
    } */
    //创建键盘扫描器对象
    java.util.Scanner  s = new java.util.Scanner(System.in);
    System.out.print("请输入星期:");
    String day03 = s.next();//接收用户键盘输入的值
    switch(day03){
        case "星期一" :
            System.out.print("1");
          break;
        case "星期二" :
            System.out.print("2");
          break;
        case "星期三" :
            System.out.print("3");
          break;
        case "星期四" :
            System.out.print("4");
          break;
        case "星期五" :
            System.out.print("5");
          break;
        case "星期六" :
            System.out.print("6");
          break;
        case "星期日" :
            System.out.print("7");
          break;
        default :
            System.out.print("你输入的数据非法!");
           /*       
      char c = 'A';
      switch(c){
          case 'A' :
              System.out.println("高级");
            break;
          case 66 :  //B的ANSI码
              System.out.println("高级");
            break;
          case 'B' :
              System.out.println("高级");
            break;
          case 'C' :
              System.out.println("高级");
            break;
      } */
    }
    }
}
  • 9.运行效果图:


0a2653c851af460fa595bd959398a8f1.png

相关文章
|
6月前
|
存储 缓存 Java
最新Java基础系列课程--Day10-IO流文件处理
最新Java基础系列课程--Day10-IO流文件处理
|
6月前
|
存储 Java
最新Java基础系列课程--Day10-IO流文件处理(一)
最新Java基础系列课程--Day10-IO流文件处理
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
73 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
5月前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
172 2
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
5月前
|
安全 Java
|
5月前
|
搜索推荐 算法 Java
【Java基础】 几种简单的算法排序
几种简单的JAVA算法排序
54 4
|
5月前
|
存储 缓存 Java
Java基础17-读懂Java IO流和常见面试题(二)
Java基础17-读懂Java IO流和常见面试题(二)
42 0
|
5月前
|
存储 Java Unix
Java基础17-读懂Java IO流和常见面试题(一)
Java基础16-读懂Java IO流和常见面试题(一)
76 0
|
6月前
|
Java
Java基础教程(12)-Java中的IO流
【4月更文挑战第12天】Java IO涉及输入输出,包括从外部读取数据到内存(如文件、网络)和从内存输出到外部。流是信息传输的抽象,分为字节流和字符流。字节流处理二进制数据,如InputStream和OutputStream,而字符流处理Unicode字符,如Reader和Writer。File对象用于文件和目录操作,Path对象简化了路径处理。ZipInputStream和ZipOutputStream则用于读写zip文件。
下一篇
无影云桌面