当前位置: 首页 > article >正文

Java的switch

switch分支结构
- 基本语法
    switch(表达式){
        case 常量1://当……
        语句块1;【只要说明是语句块就可能是一个语句或者多条语句】
        break;
        case 常量2:
        语句块2;
        break;
        ……(以此类推,可以写多个)
        case 常量n:
        语句块n;
        break;
        defult:【defult后面用的是冒号!分号】
        defult语句块;
        break;

- 说明
  1.switch关键字,表示switch分支
  2.表达式,对应一个值(运行之后必定是一个固定的值)
  3.case 常量1 :当表达式的值等于常量1 就执行语句块1
  4. break : 表示推出switch
  5.如果和case常量1 匹配,就执行语块1 如果没有匹配 就继续匹配 case 常量2
  6.如果一个都没有匹配上 执行default
- 注意事项和细节讨论
  1 表达式数据类型 应该和case 后的常量类型保持一致 或者是可以自动转化成相互比较的类型
    比如: 输入的是字符 而常量是 int
【Java数据类型】
    - 基本数据类型
        - 数值型
            - 整数型 存放整数
                byte short int long
            - 浮点(小数)类型
                float(单精度) double(双精度)
        - 字符型 char 存放单个字符
        - 布尔型 Boolean 存放true false
    - 引用数据类型
        - 类 class
        - 接口 interface
        - 数组[]
【基本数据类型转换】: 精度小的可以自动转换为精度大的[自动转换]
    - 规则[只能按规则顺序转换]
        char->int->long->float->double
        byte->short->int->long->float->double
    - 注意和细节
        1 有多种类型的数据混合运算时 系统首先自动将所有数据转换成容量最大的那种数据类型 然后在进行计算
        2 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型则会报错 反之就会进行自动类型转换
        3 byte short和char 之间不会相互自动转换
        4 byte short char 他们三者可以计算 在计算时
    精度大的 强制 转换为精度小的[强制转换]
    - 介绍
        自动转换的逆过程 将容量大的数据类型转化为容量小的数据类型 使用的时候要加上   强制转换符() 

但是可能造成精度降低或者溢出【注意】
    - 细节说明
        1 当进行数据的大小 大->小  就需要使用强制转换
        2 强制转换符号只针对最近的操作有效  往往会使用小括号提升优先级
          比如:  int x=(int)10*3.5+6*1.5;     这个是优先提升10
                 int y=(int)(10*3.5+6*1.5);   这个优先提升的是括号内这个式子的结果
        3 char类型可以保存 int 的常量值  但是不能保存 int 的变量值 需要进行强转
        4 byte 和 short 类型在进行运算的时候 当做int 类型处理

package lfx250218;

public class ForceCovertDetail {
    //强制转换类型的细节说明
    public static void main(String[] args) {
        //1 强制转换符只针对最近的操作有效  往往会使小括号提高优先级
        //int x=(int)10*3.5+6*3.5;//3.5是double类型的  double->int是转换不过去
        int y=(int)(10*3.5+6*1.5);
       // System.out.println(x);
        System.out.println(y);
        //char 类型可以保存int 的常量值  但是不能保存int的变量值需要进行强转
        char c1=10;
        int m=100;
      //  char c2=m;
        char c3=(char) m;
        System.out.println(c3);//输出100 所对应的字符【看ASCII码】
    }
}

   2   switch(表达式)中表达式的返回值必须是【byte short int char enum String】
【添加enum(蓝桥杯中基础题的题型之一)】   enum是一个关键字,用于定义枚举类型。枚举类型是一种特殊的数据类型 它允许你定义一组命名的常量
- 基本概念:
    枚举类型是一中类类型 它可以包含自己的  方法 构造函数 字段  使用枚举可以提高代码的可读性和可维护性 因为它
  将一组相关常量封装在一起 并且可以确保变量只能取枚举中定义的值
- 特点:
    - 常量集合: 本质上是一组预定义的常量集合  这些常量是枚举类型的实例
    - 类型安全: 可以确保变量只能取枚举中定义的值,避免了使用普通数字或者字符串常量可能出现的错误
    - 可迭代:   枚举类型实现了 java.lang.Enum类没并且可以使用valus()方法返回一个包含所有枚举常量的数组,从而进行迭代操作
  3 case子句中的值必须是常量 而不能是变量
  4 default子句是可选的 当没有匹配的case时 执行default
  5 break语句是用来执行完一个case分支后使程序跳出switch语句块  如果没有写break 程序会顺序执行到switch结尾
switch和if的比较
    - 如果判断的具体数值不多 而且符合btye short int char enum String 这6种类型 虽然两个语句都可以使用  但是建议使用switch语句
    - 其他情况: 对区间判断 对结果为Boolean 类型判断 使用if if 的范围更加广泛

switch相关的练习代码

package lfx250218;

import java.util.Scanner;

//switch的入门小练习
public class switch01 {

    public static void main(String[] args) {

       /*
        要求:
        1 请编写一个程序,该程序可以接受一个字符,比如:a b c d e f g
        2 a 表示星期一 b 表示星期二……
        3 根据用户的输入显示对应的信息 要求使用switch 语句完成

        思路分析
        1 接收一个字符 创建一个Scanner对象
        2 使用switch语来完成匹配信息
         */
        Scanner mya=new Scanner(System.in);
        System.out.println("请输入一个字符,并且字符要在a和g之间");
        char c1=mya.next().charAt(0);//把接收到的一个字符串转成一个字符
        /*
        Java的基本数据类型
        - 整数型
            byte:储存空间  1个字节(8位)
                  取值范围  -128到127
            short:储存空间  2个字节(16位)
            int:  储存空间  4个字节(32位)
            long: 储存空间  8个字节(64位)
        - 浮点型
            float: 储存空间  4个字节(32位)
            double: 储存空间  8个字节(64位)
        - 字符型
            char    储存空间  2个字节(16位)
        -布尔型
             boolean    取值true或者false
         [弄混淆]
         1 String是一个非常重要并且常用的类,用于表示字符串
         2 String对象一旦被创建,其内容不能被改变 当对String对象进行 拼接 ,替换 等操作时
         3 实际上是创建了一个新的String对象
         4 字符串拼接使用的是“+”运算
         */
        //在Java中只要有值返回 就是一个表达式
        switch (c1){
            case 'a' :
                System.out.println("今天星期一。");
                break;
            case 'b' :
                System.out.println("今天星期二。");
                break;
            case 'c' :
                System.out.println("今天星期三。");
                break;
            case 'd' :
                System.out.println("今天星期四。");
                break;
            case 'e' :
                System.out.println("今天星期五。");
                break;
            case 'f' :
                System.out.println("今天星期六。");
                break;
            case 'g' :
                System.out.println("今天周日。");
                break;
            default:
                System.out.println("没有相关信息");
                break;



        }
    }
}
package lfx250218;

import java.util.Scanner;

public class switch02 {
    //使用switch把小写类型的char转化为大写(键盘输入) 只转化a b c d
    //其他输出other
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        char c1=myScanner.next().charAt(0);
        switch (c1){
            case 'a':
                System.out.println('A');
                break;
            case 'b':
                System.out.println('B');
                break;
            case 'c':
                System.out.println('C');
                break;
            case 'd':
                System.out.println('D');
                break;
            case 'e':
                System.out.println('E');
                break;
            default:
                System.out.println("other");
                break;

        }

    }
}
package lfx250218;

import java.util.Scanner;

public class switch03 {
    //对于学生成绩大于60分的 输出“合格”
    //          低于60分的 输出“不合格”
    //注意; 输出的成绩不能大于六十
    public static void main(String[] args) {
        //定义一个输入对象
        Scanner myScanner=new Scanner(System.in);

        //定义一个成绩变量
        int score= myScanner.nextInt();
        //判断成绩在0到100 这个范围内用if语句
        if (score>=0&&score<=100) {
            //先判断输入的成绩是否正确
            int s1 = (int) (score / 60);
            switch (s1) {
                case 1:
                    System.out.println("合格");
                    break;
                case 0:
                    System.out.println("不合格");
                    break;
                default:
                    System.out.println("输入有错误");
                    break;

            }
        }

    }
}

package lfx250218;

import java.util.Scanner;

public class switch04 {
    //根据用于指定月份 打印该月份所属的季节  3 4 5 春季 6 7 8  夏季 9 10 11秋季
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        int month= myScanner.nextInt();
        if (month>=1&&month<=12){
            switch (month){
                case 3|4|5:
                    System.out.println("春季");
                    break;
                case 6|7|8:
                    System.out.println("夏季");
                    break;
                case 9|10|11:
                    System.out.println("秋季");
                    break;
                default:
                    System.out.println("冬季");
                    break;

            }
        }else {
            System.out.println("输入信息错误");
        }
    }
}

- 电脑内存单位的基本换算【背】【呃呃呃我不会,所以背一下吧】
    1 千字节(KB) = 1024 字节(Byte),即 1KB = B = 1024B。
    1 兆字节(MB) = 1024 千字节(KB),即 1MB = B = 1024KB = 1024×1024B 。
    1 吉字节(GB) = 1024 兆字节(MB),即 1GB = B = 1024MB = 1024×1024KB = 1024×1024×1024B。
    1 太字节(TB) = 1024 吉字节(GB),即 1TB = B = 1024GB 。
    1 拍字节(PB) = 1024 太字节(TB),即 1PB = B = 1024TB 。
    1 艾字节(EB) = 1024 拍字节(PB),即 1EB = B = 1024PB











 


http://www.kler.cn/a/553468.html

相关文章:

  • DeepSeek:企业级大模型私有化部署与应用全解析(深度扩展版)
  • 深入解析 Flutter 路由与导航:从基础到项目实战
  • 如何使用 Flutter DevTools 和 PerformanceOverlay 监控性能瓶颈
  • C++:pthread的使用
  • 【爬虫基础】第一部分 网络通讯 P1/3
  • 【Python爬虫(18)】解锁验证码识别:Python爬虫进阶秘籍
  • Linux配置SSH公钥认证与Jenkins远程登录进行自动发布
  • Windows10 将Docker虚拟磁盘文件ext4.vhdx迁移至D盘
  • 基于Matlab实现永磁同步电机矢量控制仿真程序
  • 蓝桥杯备考:贪心算法之排座位
  • 【DeepSeek系列】04 DeepSeek-R1:带有冷启动的强化学习
  • SIM盾构建安全底座的可行性分析
  • 【C#/C++】C#调用C++ DLL bool返回值始终为true的问题排查
  • 阐解WiFi信号强度
  • Breakout Tool
  • 【CUDA 】第4章 全局内存——4.4 核函数可达到的带宽(4对角转置)
  • 【golang】channel带缓存和不带缓存的区别,应用场景解读
  • 一周学会Flask3 Python Web开发-http响应状态码
  • 【LLM】Llama 3 论文精读
  • 使用DeepSeek编写VTK读取PLY的Demo