[JavaSE] java流程控制语句之Switch—Day06

目录

 分支语句—— switch

 总结:


 分支语句—— switch

//语法结构:
switch(表达式){
		case 值1:
			...代码块1...
		break;
		case 值2:
			...代码块2...
		break;
		case 值n:
			...代码块n...
		break;
		default:
			...default代码块...
		break;
}

注意:

表达式的结果:byte、short、char、int、字符串(JDK1.7)、枚举(JDK1.5)
      表达式的结果分别于值1、值2、值n比较,哪个相等执行对应的代码块
      break表示跳出整个switch分支
      default表示表达式的结果分别于值1、值2、值n比较,都不匹配的情况,就执行default代码块
      default代码块根据需求可写可不写

例:

	switch(500){
		case 10:
			System.out.println("10");
		break;
		case 50:
			System.out.println("50");
		break;
		case 100:
			System.out.println("100");
		break;
		default:
		    System.out.println("default代码块");
		break;
				}
		
		System.out.println("switch以外的代码");

运行结果:

例子:
       小邓参加计算机编程大赛
                如果获得第一名,将参加公司组织的1个月马尔代夫旅游
                如果获得第二名,将奖励苹果Pro笔记本电脑一部
                如果获得第三名,将奖励移动硬盘一个
                否则,白经理扣小邓同学工资
            

    //1.输入名次
    Scanner scan = new Scanner(System.in);
    System.out.println("请输入比赛名次:");
    String str = scan.next();
                
     //2.判断
      switch(str){
          case "第一名":
              System.out.println("和白经理一起参加公司组织的1个月马尔代夫旅游");
          break;
          case "第二名":
              System.out.println("奖励苹果Pro笔记本电脑一部");
          break;
          case "第三名":
              System.out.println("奖励移动硬盘一个");
          break;
          default:
              System.out.println("白经理扣小邓工资");
          break;
                }

运行结果:

 知识点:switch的底层原理
     switch表达式的结果:byte、short、char、int、字符串(JDK1.7)、枚举(JDK1.5)
     底层都是将byte、short、char、字符串(JDK1.7)、枚举(JDK1.5)转换为int类型,再做比较
                    byte   向上转型成 int
                    short  向上转型成 int
                    char   向上转型成 int
                    字符串 获取到字符串的hash值 int
                    枚举   获取枚举类对象里的数值 int
            
知识点:switch的面试题

     case的值可以相同吗?
       不可以,语法错误
     default可以省略吗?
        default类似于if中的else,可以省略
     break可以省略吗?
         可以省略(也不一定)

        注意参考:关于switch中的default里面的break是否可以省略这件事_Vengo€bs的博客-CSDN博客
     default的位置一定要在最后吗?
         不一定,但是考虑到可读性建议在最后
     表达式值的类型可以是什么?
          byte、short、char、int、字符串(JDK1.7)、枚举(JDK1.5)
     case后面值的类型可以是不一样吗?    
          可以,但是要看是否兼容

switch(97){
    case 10:
		System.out.println("10");
	break;
	case 50:
		System.out.println("50");
	break;
	case 'a':
	    System.out.println("a");
	break;
	default:
		System.out.println("default代码块");
	break;
				}

运行结果:

例子:
              需求:输入年和月,输出当月的天数
            分析:
                1、3、5、7、8、10、12:31天
                4、6、9、11:30天
                2:平年28天、闰年29天
                年份被4整除且不能被100整除 或者 年份被400整数 为闰年     

  
                //1.输入年和月
                Scanner scan = new Scanner(System.in);
                System.out.println("请输入年:");
                int year = scan.nextInt();
                System.out.println("请输入月:");
                int month = scan.nextInt();
        
                //2.判断
                int day = 0;//当月的天数
                switch(month){
                    case 1:case 3:case 5:case 7:case 8:case 10:case 12:
                        day = 31;
                    break;
                    case 4:case 6:case 9:case 11:
                        day = 30;
                    break;
                    case 2:
                        if(year%4==0 && year%100!=0 || year%400==0){//闰年
                            day = 29;
                        }else{//平年
                            day = 28;
                        }
                    break;
                }
                
                //3.输出
                System.out.println(year + "年" + month + "月当月的天数为:" + day + "天");
                

运行结果:

 总结:

if vs switch
            表达式的区别:
                if:表达式只能是boolean
                switch:表达式可以是byte、short、int、char、字符串、枚举
                
            应用场景的区别:
                if:
                    判断区间
                    判断负责条件
                    二选一
                    多选一
                    嵌套
                switch:
                    判断单个值
                    二选一
                    多选一
                    嵌套

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单^不简单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值