本文介紹了開關(guān)情況下不接受的最后一個(gè)常量的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我想知道方法Add()內(nèi)部的兩個(gè)聲明之間的區(qū)別,如下所示。
final int c;
c = 20;
和
final int c = 20;
我認(rèn)為這兩個(gè)變量都是最終變量,我無法為其重新賦值任何新值。下面是以不同方式處理上述聲明的方法。
void add() {
final int a = 30;
final int b = 10;
final int c;
c = 20;
switch (a) {
case b + c:
System.out.println("In case b+c");
break;
default:
break;
}
}
上面的方法根本沒有編譯,并抱怨
常量表達(dá)式需要大小寫b+c
如果變量c在一行中聲明和初始化,如final int c = 30;
。它起作用了。
推薦答案
JLS #4.12.4將常量變量定義為(強(qiáng)調(diào)我的):
基元類型或類型
String
的變量,即最終并使用編譯時(shí)常量表達(dá)式初始化的變量稱為常量變量。
在您的情況下,final int c = 20;
是常量變量,但final int c; c = 20;
不是。
這篇關(guān)于開關(guān)情況下不接受的最后一個(gè)常量的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,