java枚舉常量
❶ java:這里的枚舉常量是如何定義的呢
枚舉(從JDK1.5開始有)
用於代表」實例已經固定「的類,而且定義時就必須在【第一行】創建初始化並列出來。
語法格式:
修飾符 enum 枚舉名{
//立即在第一行列出該枚舉的所有實例。
}
—— 修飾符 可以是 public | 省略 | abstract | final。 abstract與final必須出現其中一個。
—— 枚舉的構造器只能用private修飾。
—— 枚舉類的實例必須在第一行顯式的列出。
所有的枚舉都有一個values()方法,返回枚舉實例
switch(byte|short|char|int|String|枚舉)
●有了枚舉之後,它的實例已經創建出來了,只需要用它們就行了。
●枚舉可以有Field,方法,構造器(只能是private修飾),初始化塊,內部類。
列出枚舉值,並不是簡單的定義幾個枚舉值的變數名。
而是調用枚舉類的構造器來創建相應的實例。
定義枚舉的方法時要非常小心,
●包含抽象方法的枚舉類
●枚舉可以實現介面。
A。實現介面,並直接實現所有的抽象方法。
此時枚舉類不再是抽象枚舉了。
B。實現介面,但並不直接實現抽象方法。
此時枚舉類就只能是抽象枚舉類。
❷ java中的枚舉類和常量類區別在哪兒
說白了
枚舉就是將常量值限定在了指定的范圍,
比如定義常量 int型 可以鍵入 任何的int值
如果定義枚舉 裡面 有 int 型 1 2 3 那麼這個地方就只能鍵入1 2 3 中的一個,
❸ 如何使用java 枚舉定義常量
枚舉類:
publicenumColor{
RED("紅色",1),GREEN("綠色",2),BLANK("白色",3),YELLO("黃色",4);
privateStringname;
privateintindex;
privateColor(Stringname,intindex){
this.name=name;
this.index=index;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetIndex(){
returnindex;
}
publicvoidsetIndex(intindex){
this.index=index;
}
}
測試類:
publicclassB{
publicstaticvoidmain(String[]args){
//輸出某一枚舉的值
System.out.println(Color.RED.getName());
System.out.println(Color.RED.getIndex());
//遍歷所有的枚舉
for(Colorcolor:Color.values()){
System.out.println(color+"name:"+color.getName()+"index:"+color.getIndex());
}
}
}
輸出結果:
紅色
1
REDname:紅色index:1
GREENname:綠色index:2
BLANKname:白色index:3
YELLOname:黃色index:4
❹ java枚舉類型enum用法
用法如下:
用法一:常量 在JDK1.5之前,我們定義常量都是:public static fianl....。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供了比常量更多的方法
用法六:使用介面組織枚舉
用法七:關於枚舉集合的使用
❺ JAVA中的枚舉常量是什麼
枚舉用於聲明一組命名的常數,當一個變數有幾種可能的取值時,可以將它定義為枚舉類型。
任意兩個枚舉成員不能具有相同的名稱
在枚舉類型中聲明的第一個枚舉成員它的默值為0
允許多個枚舉成員有相同的值.
沒有顯示賦值的枚舉成員的值,總是前一個枚舉成員的值+1.
e.g:
public enum Number
{
a=1,
b,
c=1,
d
} ;
b的值為2,d的值為2.
❻ java枚舉與常量類區別
常量publicclassConstant{publicstaticfinalStringCONST_ONE="bb";publicstaticfinalStringCONST_TWO="cc";}
常量作為參數時,是String,int等弱類型,開發人員可以傳入沒有在常量介面里定義的值,這個問題無法通過編譯器發現。
由於開發人員可以直接寫常量,所以不能用==對比,只能用equals對比,不能優化性能。
開發人員沒有參考資料時,不可能知道某個int類型的參數到底應該賦什麼內容。
編譯時,是直接把常量的值編譯到類的二進制代碼里,常量的值在升級中變化後,需要重新編譯引用常量的類,因為裡面存的是舊值。
如果常量類的構造器不私有,無法限制開發員繼承/實現介面,開發員能夠在子介面里繼續添加常量.而這些常量可能得不到祖先層的支持。
publicclassConstant{privateStringname;privateEnumClassA(){this.name=name;}_ONE=newConstant("bb");_ONE=newConstant("cc");}
私有構造函數,避免被繼承和擴展。
定義方法的參數時,必須用枚舉常量類類型,如上面的Constant,這樣就轉變成了強類型,不會出現弱類型引用的問題。
常量值地址唯一,可以用==直接對比,性能會有提高。
編譯時,沒有把常量值編譯到代碼里,即使常量的值發生變化,也不會影響引用常量的類。
枚舉類