-
Java —— 如何在switch语句中使用枚举
2021-01-11 21:07:38如何在switch语句中使用枚举作为case入参? 代码示例 枚举 public enum ENUMM { A, B } switch语句 //入参可直接传A或B public void switchEnum(@RequestParam ENUMM enumm) { switch (enumm) { case ...问题
如何在switch语句中使用枚举作为case入参?
代码示例
枚举
public enum ENUMM { A, B }
switch语句
//入参可直接传A或B public void switchEnum(@RequestParam ENUMM enumm) { switch (enumm) { case A: ... break; case B: ... break; default: ... } }
-
switch integer java_java – 在Switch语句中使用Integer
2021-03-07 04:26:24它们最初是int但我想将它们更改为Integer所以我可以对它们做一个等号(即避免NPE的MY_ID.equals(..))当我将它们更改为Integer时,我的switch语句中出现错误. docs说Integer在交换机中应该没问题.去引用[Switch] also ...出于各种商业原因,我想在我的一个类中保留一些静态ID.它们最初是int但我想将它们更改为Integer所以我可以对它们做一个等号(即避免NPE的MY_ID.equals(..))
当我将它们更改为Integer时,我的switch语句中出现错误. docs说Integer在交换机中应该没问题.
去引用
[Switch] also works with enumerated types (discussed in Enum Types),
the String class, and a few special classes that wrap certain
primitive types: Character, Byte, Short, and Integer (discussed in
Numbers and Strings).
在下面的代码中,如果我是一个int,那么它编译.当它是一个整数时,它并不是说需要一个常量表达式.我尝试过.intValue(),但这也不起作用.
我真的很蠢吗?还是完全误读了docs?
private static final Integer i = 1;
@Test
public void test() {
switch(mObj.getId()){
case i: //do something
default: //do something default
}
}
感谢您的任何指示.暂时我将它们保持为int并执行新的Integer(myint).equals(…)
-
《Hack与HHVM权威指南》——1.5.6 在switch语句中的越界
2017-05-02 16:58:00本节书摘来自华章出版社《Hack与HHVM权威指南...1.5.6 在switch语句中的越界 在switch语句中有从一个分支不小心越界到另外一个分支的常见错误。Hack添加了一条规则来捕获这种错误。下面将展示一个案例,从一个case分...本节书摘来自华章出版社《Hack与HHVM权威指南》一书中的第1章,第1.5.6节,作者 Owen Yamauchi,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.5.6 在switch语句中的越界
在switch语句中有从一个分支不小心越界到另外一个分支的常见错误。Hack添加了一条规则来捕获这种错误。下面将展示一个案例,从一个case分支越界到另外一个分支将会引发一个错误,除非第一个分支是空的:
switch ($day) { case 'sun': echo 'Sunday'; // 错误 case 'sat': echo 'Weekend'; break; default: echo 'Weekday'; } switch ($day) { case 'sun': // 正确:这条语句越界了,但它是空的。 case 'sat': echo 'Weekend'; break; default: echo 'Weekday'; }
如果这个越界是故意的,那么请放置注释内容“ // FALLTHROUGH ”到要穿越分支的最后一行。
switch ($day) { case 'sun': echo 'Sunday'; // FALLTHROUGH case 'sat': echo 'Weekend'; break; default: echo 'Weekday'; }
这对编程人员提出了一些行动上的要求,只有这样才能更好地降低由于疏忽导致的越界可能性。
-
在switch语句中使用字符串以及实现原理
2018-06-20 11:14:13一次机缘巧合,在idea中调试代码的时候,跳到了.class文件中,刚好调试的代码是switch,于是就有了下面的内容:对于Java语言来说,在Java 7之前,switch语句中的条件表达式的类型只能是与整数类型兼容的类型,包括...一次机缘巧合,在idea中调试代码的时候,跳到了.class文件中,刚好调试的代码是switch,于是就有了下面的内容:
对于Java语言来说,在Java 7之前,
switch语句中的条件表达式的类型只能是与整数类型兼容的类型,包括基本类型char、byte、short和int,与这些基本类型对应的封装类Character、Byte、Short和Integer,
还有枚举类型。这样的限制降低了语言的灵活性,使开发人员在需要根据其他类型的表达式来进行条件选择时,不得不增加额外的代码来绕过这个限制。为此,Java 7放宽
了这个限制,额外增加了一种可以在switch语句中使用的表达式类型,那就是很常见的字符串,即String类型。
源代码:
- public class TestSwitch {
- public static void main(String[] args) {
- test("a");
- }
- public static void test(String type) {
- switch (type) {
- case "a":
- System.out.println("aa");
- break;
- case "b":
- System.out.println("bb");
- break;
- }
- }
- }
- public class TestSwitch {
- public static void main(String[] args) {
- test("a");
- }
- public static void test(String type) {
- switch (type) {
- case "a":
- System.out.println("aa");
- break;
- case "b":
- System.out.println("bb");
- break;
- }
- }
- }
编译后的.class文件:
- import java.io.PrintStream;
- public class TestSwitch
- {
- public TestSwitch()
- {
- }
- public static void main(String args[])
- {
- test("a");
- }
- public static void test(String type)
- {
- String s;
- switch((s = type).hashCode())
- {
- default:
- break;
- case 97: // 'a'
- if(s.equals("a"))
- System.out.println("aa");
- break;
- case 98: // 'b'
- if(s.equals("b"))
- System.out.println("bb");
- break;
- }
- }
- }
从代码可以看出,java虚拟机实际上是将字符串转化为哈希值,还是利用整数类型兼容的类型来进行判断,但是哈希值可能存在值相等的情况,所以又对字符串进行了2次比较。
总结:switch能判断字符串是因为将字符串做了哈希运算,本质上还是数字,java虚拟机没有变化,只是编译器发生了变化。
不过值得一提的是,通过这件事,给我们提供了一种新的思路,通过查看编译后的java文件,来探究底层实现方法。
-
我们可以在switch语句中使用goto语句吗? 在PHP中
2015-08-14 11:33:36<p><strong>Fatal error: 'goto' into loop or switch statement is disallowed in</strong></p> <p>any suggestions how to get the checkboxes for each division for the 1st three fields. <p>with the loop ... -
是否可以在switch语句中嵌套if语句
2013-01-27 18:23:26本人是新手,刚学习JAVA,在一次简单编程中想知道是否可以在switch语句中嵌套if语句。 以下是一个简单的公交站点查询小程序,我的想法是先输入自己的起始地和目的地,然后程序自动给出经过的站点,在编程中遇见了... -
C语言:break、continue、return在switch语句中的跳转关系
2017-03-01 13:55:19void fun1() { char Variable; Variable = xx; switch (Variable) { case Value1: 代码1; break;//跳出switch循环:即直接跳到代码5 case Value2: 代码2; continue;//跳出本次switch循环 -
Java疑难|Java 1.8 不支持在switch语句中使用字符串作为条件
2019-03-03 12:32:551.出现问题: xception in thread "main" java.lang.Error: 无法解析的...switch (command) { case 'Buy': quantity += 5; balance -= 20; break; case 'SELL': quantity -= 5; ... -
为什么不能在 switch 语句中声明变量?
2008-09-18 13:11:55<p>I've always wondered this - why can't you declare variables after a case label in a switch statement? In C++ you can declare variables pretty much anywhere (and declaring them close to first use is... -
Switch语句中的enum
2019-01-31 10:01:19在Switch语句中使用enum,枚举实例具备整数值的次序,还可以用ordinal方法取得次序 实例: package xfj; enum Signal {green, yellow,red, } public class TrafficLight { Signal color = Signal.green; ... -
switch 语句中漏写 break
2020-12-22 08:49:21在 switch 语句中漏写 break, 可能会使你的输出在你意料之外,下面我来和你们仔细讲解 break 的作用: 下 面的代码是正确示范,结果将是只会输出:这里是a。 倘若你忘敲了 case ‘a’,case ‘b’,case ‘c’ 后的 ... -
c++语句switch语句_错误:案例标签不在C中的switch语句内
2020-06-27 09:30:07c++语句switch语句The error: case label not within a switch statement occurs in C language with switch case statement, when switch (variable/value) statement is terminated by the semicolon (;... -
关于switch语句中省略break语句的问题
2015-11-27 20:58:55在switch语句中省略了break语句,那么匹配的case值以及以后的所有情况(包括default)都会被执行,除非遇到break或者结束为止。 此外,应该了解 switch(c)中的c可以使int、long、char、unsigned int等,但是唯独不能... -
switch语句中使用break???
2017-05-25 17:20:28break是跳出循环使用的。而在switch语句中使用switch语句是结束switch语句。比如:switch(x){ case 1: System.out.println("这是一楼"); break; case 2: System.out.println("这是二楼"); bre -
java中switch语句_在Java中使用switch语句进行多项选择
2020-09-11 09:27:04java中switch语句 If your Java program needs to make a choice between two or three actions, an if, then, else statement will suffice. However, the if, then, else statement begins to feel cumbersome ... -
循环和switch语句中的continue、break
2019-05-18 17:24:071.在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以会出现继续执行所有后面case语句的情况。... -
JavaScript中Switch语句的使用方法
2020-09-19 09:59:01除了if ... else之外,JavaScript还有一个称为switch语句的功能。 switch是一种条件语句,它将针对多种可能的情况... 最后,我们将介绍如何在switch语句中使用多个case。 Switch switch语句计算表达式并作为匹配大小 -
【java知识点】java中default关键字在 switch语句 和 接口 中的使用
2020-05-13 21:40:14一、default关键字在 switch语句中的使用 首先看一个例子: public class DefaultTest { public static void main(String[] args) { int a = 4; switch (a){ case 0: System.out.println("value is 0"); break... -
switch语句_Python中switch语句的两个替代
2020-12-10 07:36:15其他编程语言(例如JavaScript)采用switch语句,...Switch语句在Python中不存在;但是,有一些方法可以模拟其行为。这是这样做的两种方法。在.get()中使用字典函数此方法利用Python的字典数据类型来获得类似的结果... -
用switch语句编写程序_如何在Go中编写switch语句
2020-08-11 13:13:47用switch语句编写程序 介绍 (Introduction) Conditional statements give programmers the ability to direct their programs to take some action if a condition is true and another action if the condition is ... -
switch语句反汇编
2020-07-26 22:43:49switch语句反汇编一、switch语句1、在正向编码时,switch语句可以看做是if语句的简写2、break在switch语句中十分重要二、switch语句的反汇编1、当switch存在3个分支时2、当switch存在4个分支及以上且连续时3、当... -
大话switch语句
2019-04-09 08:57:44很多小伙伴在switch语句中可能存在一些疑问,那就是 首先,我们来介绍一下switch语句的格式 switch(表达式){ case 值1: 语句; break; case 值2: 语句; break; ... default: 语句; break; } ,上面... -
switch语句随笔
2020-11-24 19:58:49在switch语句中,我们没法直接实现分支,搭配break才能实现正的分支 #include<stdio.h> int main()//一条龙执行下去 { int day = 0; scanf_s("%day",&day); switch (day) { case 1: printf("星期一\n"); ... -
C语言中switch语句的思考
2016-03-01 16:03:09在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以出现了继续执行所有后面case语句的情况。 -
switch语句中的scanf语句
2017-09-27 16:21:16今天在写老师布置的题时,发现我switch语句下的scanf无法运行 后来试了getch()才能运行。