Tag: switch statement

字符串作为switch语句

可能重复: 使用Java中的字符串切换语句 我试图在String上使用switch语句,但它给出了编译错误。 如果任何人建议我如何在switch-case语句中使用String,它将对我有所帮助。

java – 范围为int的switch语句

我想用一个switch语句检查一些数字,我发现有几个地方说类似case 1…5或case (score >= 120) && (score <=125)会起作用但我只是以某种方式保持在获得错误。 我想要的是如果数字在1600-1699之间然后做点什么。 我可以做if语句,但是如果可能的话,我觉得是时候开始使用switch了。

标记方法并通过标记从客户端对象调用它们

我一直试图找出一种方法来从我的基类中标记几个方法,以便客户端类可以通过标记来调用它们。 示例代码是: public class Base { public void method1(){ ..change state of base class } public void method2(){ ..change state of base class } public void method3(){ ..change state of base class } } main()方法的客户端类将通过随机指令序列调用Base的每个方法: public static void main(String[] args) { String sequence = “ABCAABBBABACCACC” Base aBase = new Base(); for (int i = 0; […]

switch语句可以有多个变量吗?

问题基于所有使用switch块的语言(C ++,C#PHP,Java,Python等)。 那么有可能有这样的东西吗? switch (var1, var2) case var1 = a: something break; case var2 = b: something break; case var1 = 0 ,var2 = 1 etc…

何时在Java中使用switch语句

我很欣赏任何可以通过switch语句完成的事情都可以通过if else语句来完成。 但是,当有人应该使用开关而不是if else的声明时,是否有风格规则。

切换似乎比如果慢

我很好奇切switch速度,认为它“非常”快,但我有一个测试用例似乎显示单个开关大约快4, if测试,当我预期(没有坚实的理由)它与1次测试一样快。 这是我用来比较switch的两种方法if : public static int useSwitch(int i) { switch (i) { case 1: return 2; case 2: return 3; case 3: return 4; case 4: return 5; case 5: return 6; case 6: return 7; default: return 0; } } public static int useIf(int i) { if (i == 1) return 2; if […]

用于Java中不同枚举类的联合的switch语句

我有两个枚举类,比如Enum1和Enum2: enum Enum1 {ONE, TWO, THREE} enum Enum2 {FOUR, FIVE} 我有一个像这样的方法: public <E extends Enum> method (E arg) { switch (arg) { // Here is the compile error — Cannot switch // on a value of type E. Only convertible int // values, strings or enum variables are permitted // (And of course, all the […]

如何为字符串执行switch case?

我对switch-case声明有疑问。 这是我的代码: String month = “April”; switch (month.toLowerCase()) { case “january”: monthNumber = 1; break; case “february”: monthNumber = 2; break; case “march”: monthNumber = 3; break; case “april”: monthNumber = 4; break; 等等.. 在这方面我有3个问题: 1)将月份与案例值进行比较,即案例“1月”,案例“2月”。编译器从以下内容中使用了什么? – month.equals(“case-value”)? – 月==案例值? 2)并且case-values内部转换为StringBuilder / StringStringBuffer或者只是它们仍然是String对象?? 3)我如何从字节代码中知道这一点,即是否有任何可用的工具,我可以直接查看编译器生成的代码,以了解内部的行为如何?

Java Enums – 在枚举上切换语句与访问者模式 – 性能优势?

我一直在寻找这个基于性能的问题的答案。 到目前为止,在挖掘了互联网之后,我了解到有几种方法可以在java中使用Enums, 这里有详细记载。 好吧,作为一个初学者,我希望在switch-case语句中使用Enums,这样可以提供清晰度并更好地理解代码。 但另一方面,我们还有一个访问者模式样式的Enums实现,它确保了类型的安全性和可扩展性, 这里讨论。 话虽如此,并回到这个问题背后的原始想法,到目前为止,我已经了解到如果使用Enums正确设计switch-case结构,这确保了case值不稀疏,并且Enum声明是相同的编译单元作为switch-case语句,java编译器通过实现跳转表这样的构造对生成的字节码执行一些优化(在这里和其他地方讨论过,在Sun的网站上,我丢失了链接)。 现在,与多个/嵌套的if-else构造相比,这肯定会提升性能。 我的问题是,java如何在生成的字节码中实现基于访问者模式的Enums实现,与基于switch-case的实现相比,性能提升是什么? 我应该选择哪种类型的实现,考虑到我的Enums可能在未来增长,我也热衷于性能。 目前,我的Enum中有一些19和奇数常量。 编辑 我有一个类存储有关游戏变量的一些信息。 其中一个变量是Enum类型。 public class GameObject { private Shape mShape; public Shape getShape() { return mShape; } . . . public static enum Shape { SHAPE1, SHAPE2, SHAPE3, SHAPE4, …, SHAPE20 }; public void drawShape() { switch (this.mShape) { case SHAPE1: drawShape1(); break; case […]

在枚举上的Java switch语句中,为什么我在每种情况下限定值时都会出现编译错误?

我在Java上有一个switch语句,在Enum上我们可以调用IMyInterface.MyEnum 我的每个case语句都有以下forms:IMyInterface.MyEnum.MyValue,(虽然我可以在导入时删除IMyInterface)。 但是,编译器(Java 6)会抛出一个错误:“必须用unqalified枚举常量MyValue替换合格的case标签IMyInterface.MyEnum.MyValue”。 我显然可以这样做,但对于我的生活,我不明白这个错误的目的是什么。 显然,如果编译器可以处理实际值,它应该能够处理完全限定名称,就像它对常量一样。 实际上,我会假设编译器将常量转换为完全限定名。 那么,Java大师们,这背后的理由是什么? 谢谢!