Java三大流程控制语句之Switch分支

本文详细介绍了Java中的Switch分支语句,包括其语法结构、基本使用、案例分析及深入探讨。通过示例展示了如何利用switch进行条件判断,如编程大赛奖项输出和判断月份天数。同时对比了if与switch在表达式类型和应用场景上的区别。
摘要由CSDN通过智能技术生成

Java三大流程控制语句之Switch分支

一、switch分支

1.语法结构:

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

2.基本使用

表达式的结果分别和case后面的值比较,哪个相等就执行对应的代码块
    如果都不相等就执行default代码块
	default代码块根据需求可写可不写
	break的作用是跳出整个switch分支
public class 文件名{
    public static void main(String[] args){
			switch(100){
				case 10:
					System.out.println("10");
				break;
				case 50:
					System.out.println("50");
				break;
				case 100:
					System.out.println("100");//100
				break;
				default:
					System.out.println("default代码块");
				break;
			}
			System.out.println("switch分支以外的代码");
    }
}

3.案例:小西参加计算机编程大赛

如果获得第一名,将参加1个月马尔代夫旅游
如果获得第二名,将奖励苹果Pro笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,通宵补课

import java.util.Scanner;
public class 文件名{
    public static void main(String[] args){
			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;
			}
    }
}

4.深入使用

经典面试题:
1.case的值可以相同吗?
case的值不能相同
2.case的值可以是不同类型吗?
可以,但是类型之间必须兼容
3.default可以省略吗?
可以省略
4.break可以省略吗
可以省略
5.default的位置一定要在最后吗?
不一定,但是为了代码的可读性,最好放在最后
6.表达式值的类型可以是什么?
byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)
7.表达式的类型为什么只有byte、short、int、char、字符串、枚举?
		因为switch底层只能识别int类型
			byte类型:自动向上转型成int类型
			short类型:自动向上转型成int类型
			char类型:获取字符的ASCII(int类型)
			String类型:获取字符串的hash码(int类型)
			枚举类型:获取枚举对象中的编号(int类型)
例题:
public class 文件名{
    public static void main(String[] args){
			switch(97){
				case 10:
					System.out.println("10");
				break;
				case 'a'://自动转换成ASCII(int类型)
					System.out.println('a');
				break;
				case 50:
					System.out.println("50");
				break;
				case 100:
					System.out.println("100");
				break;
				default:
					System.out.println("default代码块");
				break;
			}
			
    }
}
5.需求:输入年和月,输出当月的天数

分析:
1、3、5、7、8、10、12月 – 31天
4,、6、9、11月 – 30天
2月 - 闰年29天、平年28天

		年份被4整除并且不被100整除 或者 年份被400整除就为闰年
import java.util.Scanner;
public class 文件名{
    public static void main(String[] args){
			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;
			}
			
			if(day != 0){//说明用户是正常输入
				System.out.println(year + "年" + month + "月的天数为:" + day + "天");
			}else{
				System.out.println("数据有误");
			}
    }
}

二、if vs switch

1.表达式的区别:

if:只能是boolean类型
switch:byte、short、int、char、字符串、枚举

2.应用场景的区别:

if:判断区间和复杂条件
switch:判断单个值是否相等
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雨霖先森

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

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

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

打赏作者

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

抵扣说明:

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

余额充值