java中switch能否使用String作为参数?

        System.out.println("输入数字:");
	Scanner sc=new Scanner(System.in);
        int i=sc.nextInt();
        switch(i)
        {
        case 1:
        	System.out.println("hello world!");
        case 2:
        	System.out.println("test2"); 
        default:
            System.out.println("not found");
        }

在jdk1.7之前,switch支持的多种数据类型 int float  double byte 以及对应的封装类型 都可以支持。

其对应的封装类型会自动转换为int  ,所以 float  double 等数据会出现失精的情况。

那么switch到底能不能支持String类型的数据判断呢?

String test="test2";
		switch(test)
		{
		case "test":
			System.out.println("hello");
			break;
		case "test2":
			System.out.println("hello world");
			break;
		}
		

在jdk1.7开始,测试是否支持String 结果是支持的


运行结果正常,从jdk1.7开始,switch支持更多的数据类型,字符串,字符类型,枚举,布尔都支持!



### Javaswitch case语句返回字符串 在Java中,`switch-case`结构可以用于处理多种情况的选择逻辑,并且能够通过不同的case来决定最终要返回的字符串。自Java 7起支持基于字符串类型的`switch-case`表达式[^2]。 #### 使用return语句从方法内返回字符串 当希望利用`switch-case`实现特定条件下返回不同字符串的功能时,通常是在一个函数内部完成此操作。下面的例子展示了如何定义一个接受整数参数并依据该值返回相应描述文字的方法: ```java public class ReturnStringFromSwitch { public static String getDayOfWeek(int dayIndex) { String result; switch (dayIndex) { case 1: result = "Monday"; break; case 2: result = "Tuesday"; break; case 3: result = "Wednesday"; break; case 4: result = "Thursday"; break; case 5: result = "Friday"; break; case 6: result = "Saturday"; break; case 7: result = "Sunday"; break; default: result = "Invalid Day Index!"; } return result; } public static void main(String[] args) { System.out.println(getDayOfWeek(3)); // 输出 Wednesday } } ``` 另一种更简洁的方式是从每个case标签下直接使用`return`语句立即退出当前方法,这样就不必声明额外的结果变量了: ```java public class DirectReturnInSwitch { public static String describeNumber(int num) { switch (num) { case 0: return "Zero"; case 1: return "One"; case 2: return "Two"; default: return "Unknown Number"; } } public static void main(String[] args) { System.out.println(describeNumber(1)); // 输出 One } } ``` 对于较新的Java版本(如Java 12及以上),还可以采用更加紧凑的形式——箭头表示法(`->`)以及多行lambda风格的大括号体,这使得代码看起来更为清晰[^4]: ```java public class ModernSwitchExpression { public static String formatMonth(int month) { return switch (month) { case 1 -> "January"; case 2 -> "February"; case 3 -> "March"; case 4 -> "April"; case 5 -> "May"; case 6 -> "June"; case 7 -> "July"; case 8 -> "August"; case 9 -> "September"; case 10 -> "October"; case 11 -> "November"; case 12 -> "December"; default -> throw new IllegalArgumentException("Invalid Month"); }; } public static void main(String[] args) { System.out.println(formatMonth(5)); // 输出 May } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值