java - switch 语句中的最终变量大小写

标签 java switch-statement case final

        final int a = 1;
        final int b;
        b = 2;
        final int x = 0;

        switch (x) {
            case a:break;     // ok
            case b:break;     // compiler error: Constant expression required

        }
        /* COMPILER RESULT:
                constant expression required
                case b:break;
                     ^
                1 error
        */

为什么会出现这种错误?如果我执行 final int b = 2,一切正常。

最佳答案

switch 语句中的大小写在编译时 应该是常量。命令

final int b=2

在编译时将 2 的值赋给 b。但是下面的命令在运行时2的值赋给了b

final int b;
b = 2;

因此,当编译器在 switch 语句的一种情况下找不到常量时,编译器会报错。

关于java - switch 语句中的最终变量大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16255270/

相关文章:

java - 将对象引用作为自身显式传递给自己的方法

JavaScript 用变量切换?

swift - 以不透明的方式访问 Swift Enum 数组中的关联值

mysql - 根据列值对数据库行进行分类

java - 如何在 Google map 上选择正确的缩放比例

java - 试图了解什么是 Java 中的命名空间

MySQL 比较字段的空值与 case 语句

java - 循环直到对多个 switch 语句执行了break语句

java - 项目 Reactor 中的 Parallel Flux 与 Flux

javascript - If/Else/Switch 返回错误结果