当前位置: 首页 > 面试题库 >

在Switch语句中使用整数

池砚文
2023-03-14
问题内容

由于各种业务原因,我想在我的一个类中保存一些静态ID。它们本来是int但我想将它们更改为,Integer以便可以对它们进行平等处理(即MY_ID.equals(..)避免使用NPE)

当我将它们更改为Integer时,我的switch语句中出现错误。该文件说,整数应该是交换机内确定。

报价

[Switch]还适用于枚举类型(在Enum
Types中讨论),String类和一些包装某些基本类型的特殊类:Character,Byte,Short和Integer(在Numbers和Strings中讨论)。

在下面的代码中,如果我是a int则将其编译。当它是一个Integer不说constant expression is required。我曾尝试这样做,.intValue()但这也不起作用。

我真的很傻吗?还是完全误读了文档?

private static final Integer i = 1;

@Test
public void test() {
    html" target="_blank">switch(mObj.getId()){
        case i: //do something
        default: //do something default
    }

}

感谢您在此提出的任何建议。我暂时将他们int照做new Integer(myint).equals(...)


问题答案:

将常量更改为原始类型:

private static final int i = 1;

你会没事的。switch只能与基元,枚举值和(自Java 7起)字符串一起使用。一些提示:

  • new Integer(myint).equals(...)可能是多余的。如果至少有一个变量是原始变量,请执行:myint == ...equals()仅在与Integer包装器比较时才需要。

  • 更喜欢- Integer.valueOf(myInt)而不是new Integer(myInt)-并尽可能依靠自动装箱。

  • 常量通常在Java中使用大写字母编写,因此static final int I = 1



 类似资料:
  • 问题内容: 我在用Java为Android应用程序编写一些简单的代码,但出现了这些错误。 而恒定 这是因为我使用过,然后将类型更改为,问题就解决了 我的问题是为什么我们不能将其用作案例表达。Docs说:“开关适用于byte,short,char和int基本数据类型。它还适用于枚举类型(在EnumTypes中讨论),String类以及一些包装某些基本类型的特殊类:Character,字节,短整数和整

  • switch 语句可以替代多个 if 判断。 switch 语句为多分支选择的情况提供了一个更具描述性的方式。 语法 switch 语句有至少一个 case 代码块和一个可选的 default 代码块。 就像这样: switch(x) { case 'value1': // if (x === 'value1') ... [break] case 'value2':

  •  使用 switch 语句可以更简洁地实现 if ~ else if 的结构。格式如下。 switch(base_expression) { casecondition_expression1: casecondition_expression2: : : default: : : }  写在 base_expression 位置的表达式会在刚开始时被求值。switch 后面的语句块中的 case

  • 问题内容: 我有一个React组件,并且在该组件的方法内部有这样的东西: 现在的要点是,我有两个固定的元素,一个在顶部,一个在底部。在中间,我想有一个switch语句,根据状态下的值,我想渲染一个不同的组件。因此,基本上,我希望两个元素始终固定,并且每次都在中间以呈现不同的组件。我正在使用它来实现多步付款程序)。但是,正如当前的代码一样,它不起作用,因为它给了我一个错误,说这是意外的。有什么想法可

  • 问题内容: 我正在学习Swift的语法,想知道为什么下面的代码无法按我期望的那样工作: 我想每次将数字除以3(3、6、9、12等)时都打印Fizz,并且每次将其除以5时都打印Buzz,那么缺少哪一块拼图? 注意:我确实使用以下方法解决了问题: 我想知道如何使用Switch解决此问题。谢谢。 问题答案: FizzBu​​zz游戏的通常规则 是用“ Fizz”替换每个3的倍数,用“ Buzz”替换每个