switch分支,switch的深入,if 与switch的区别

(1)switch分支的使用

语法结构:
                switch(表达式){
                    case 值1:
                        ...代码块1...
                    break;
                    case 值2:
                        ...代码块2...
                    break;
                    case 值n:
                        ...代码块n...
                    break;
                    default:
                        ...default代码块...
                    break;
                }
                
理解:
                表达式分别跟值1、值2、值n比较,那个相同就执行对应的代码块
                break表示跳出当前switch分支
                default代码块类似于if分支中的else//注意: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代码块");//500——执行
					break;
				}
				
				System.out.println("switch分支以外的代码");//500——执行

案例:张三参加计算机编程大赛
                如果获得第一名,将参加千锋组织的1个月马尔代夫旅游
                如果获得第二名,将奖励苹果Pro笔记本电脑一部
                如果获得第三名,将奖励移动硬盘一个
                否则,何老师晚上给张三通宵补课

                Scanner scan = new Scanner(System.in);
				System.out.println("请输入比赛名次:");
				String str = scan.next();
				
				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主要用于判断单个值是否相同

(2)switch分支的深入

                1、case的值可以相同吗?
                    不可以
                    
                2、default可以省略吗?
                    可以(根据需求可写可不写,不违反语法规则)
                
                3、break可以省略吗?
                    可以
                
                4、default的位置一定要在最后吗?
                    default可以不放在最后,但是为了代码的可读性,需要放在最后
                
                5、表达式值的类型可以是什么?(6种)
                    int、byte、short、char、枚举(JDK1.5)、String(JDK1.7)
                    
                6、switch判断的底层原理是什么?
                    switch判断值与值之间是否相同,只识别int类型
                    原因:
                        1).switch是将byte、short、char、枚举(JDK1.5)、String(JDK1.7)转换为int类型
                        2).switch底层命令只支持识别int值
                        
                    byte     --> int 自动转型
                    short     --> int 自动转型
                    char     --> int 获取字符的Unicode码
                    枚举     --> int 获取枚举类对象的编号
                    String     --> int 获取字符串的hash码
                    long、float、double类型转成int类型都大转小,会损失精度
                    boolean:因为布尔类型不能转成 in 他类型,布尔类型不能与其他类型兼容

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

            Scanner scan = new Scanner(System.in);
			System.out.println("请输入年:");
			int year = scan.nextInt();
			System.out.println("请输入月:");
			int month = scan.nextInt();
			
			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;
			}
			
			System.out.println(year + "年" + month + "月的天数为:" + day + "天");	

(3)if vs switch

表达式的区别:
                if的表达式只支持boolean类型的数据
                switch的表达式支持byte、short、int、char、枚举、String类型的数据
 应用场景的区别:
                if可以判断区间和复杂条件
                switch可以判断单个值是否相同

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值