witch语句中,x可以是哪些类型的数据

本文解析了Java 8中switch语句对byte, char, short, int, String和enum的支持原理,涉及自动类型转换和hashCode/int值比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

jdk1.7之前byte,short ,int ,char
jdk1.7之后加入String
java8,switch支持10种类型
基本类型:byte char short int
包装类 :Byte,Short,Character,Integer String enum
实际只支持int类型 Java实际只能支持int类型的switch语句,那其他的类型时如何支持的
a、基本类型byte char short 原因:这些基本数字类型可自动向上转为int, 实际还是用的int。
b、基本类型包装类Byte,Short,Character,Integer 原因:java的自动拆箱机制 可看这些对象自动转为基本类型
c、String 类型 原因:实际switch比较的string.hashCode值,它是一个int类型
d、enum类型 原因 :实际比较的是enum的ordinal值(表示枚举值的顺序),它也是一个int类型 所以也可以说 switch语句只支持int类型

注:该解释来自于牛客题目回答。这里记录下,感谢分享。

好的,下面是一些C语言中switch语句的练习题: 1. 编写一个程序,使用switch语句根据用户输入的数字输出对应的月份名称。 ```c #include <stdio.h> int main() { int month; printf("请输入月份(1-12):"); scanf("%d", &month); switch (month) { case 1: printf("一月\n"); break; case 2: printf("二月\n"); break; case 3: printf("三月\n"); break; case 4: printf("四月\n"); break; case 5: printf("五月\n"); break; case 6: printf("六月\n"); break; case 7: printf("七月\n"); break; case 8: printf("八月\n"); break; case 9: printf("九月\n"); break; case 10: printf("十月\n"); break; case 11: printf("十一月\n"); break; case 12: printf("十二月\n"); break; default: printf("输入的数字不在1-12范围内\n"); break; } return 0; } ``` 2. 编写一个程序,使用switch语句根据用户输入的运算符计算两个数的结果。 ```c #include <stdio.h> int main() { double num1, num2, result; char op; printf("请输入两个数和一个运算符:"); scanf("%lf %c %lf", &num1, &op, &num2); switch (op) { case '+': result = num1 + num2; printf("%.2lf %c %.2lf = %.2lf\n", num1, op, num2, result); break; case '-': result = num1 - num2; printf("%.2lf %c %.2lf = %.2lf\n", num1, op, num2, result); break; case '*': result = num1 * num2; printf("%.2lf %c %.2lf = %.2lf\n", num1, op, num2, result); break; case '/': if (num2 == 0) { printf("除数不能为0\n"); } else { result = num1 / num2; printf("%.2lf %c %.2lf = %.2lf\n", num1, op, num2, result); } break; default: printf("输入的运算符不合法\n"); break; } return 0; } ``` 3. 编写一个程序,使用switch语句判断用户输入的年份是否是闰年。 ```c #include <stdio.h> int main() { int year; printf("请输入年份:"); scanf("%d", &year); if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { printf("%d年是闰年\n", year); } else { printf("%d年不是闰年\n", year); } return 0; } ``` 上面这个例子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值