首頁 >Java >java教程 >為什麼 Java Switch 語句需要常數表達式作為 Case 標籤?

為什麼 Java Switch 語句需要常數表達式作為 Case 標籤?

Barbara Streisand
Barbara Streisand原創
2024-12-06 16:45:14212瀏覽

Why Do Java Switch Statements Require Constant Expressions for Case Labels?

Java Switch 語句:常數表達式要求

在 Java 中使用 switch 語句時,case 標籤必須是常數表達式。這意味著表達式必須在編譯時已知。在給定的程式碼中:

public static String lookup(int constant) {
    switch (constant) {
        case Foo.BAR: return "bar";
        case Foo.BAZ: return "baz";
        case Foo.BAM: return "bam";
        default: return "unknown";
    }
}

case 標籤上的編譯器錯誤,因為 Foo.BAR、Foo.BAZ 和 Foo.BAM 不被視為常數表達式。雖然它們在類別中被聲明為常數,但它們並未使用特定值進行初始化。常數表達式需要一個可以在編譯時計算的值,例如使用編譯時常數初始化的文字或最終變數。

要解決此問題,可以使用以下方式初始化Foo.BAR 常數編譯時常數值:

public abstract class Foo {
    public static final int BAR = 1;
    public static final int BAZ = 2;
    public static final int BAM = 3;
}

這將允許switch 語句成功編譯,因為case 標籤現在將被評估為常數

或者,可以將常數宣告為枚舉,從而允許更簡潔的程式碼和更強型別的常數。但是,枚舉有一定的限制,例如需要預設大小寫和特定枚舉值作為大小寫標籤。

以上是為什麼 Java Switch 語句需要常數表達式作為 Case 標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn