當前位置:首頁 » 編程語言 » java字元枚舉

java字元枚舉

發布時間: 2022-10-08 05:18:31

java枚舉問題

Java的enum(枚舉)和其他語言不同。Java的enum也是一個正式的class,也有它的屬性,函數,等等。這里
private String name;
就是一個成員,而
private CupShop(String name){...}
就是一個構造函數(constructor). enum的結構是先要聲明一些枚舉的值,然後用分號隔開,然後聲明所有成員及函數。而cup1("num1")的意思就相當於
public static final CupShop cup1 = new CupShop("num1");
如果這樣理解的話,就知道enum其實就是一個class,只不過為程序員提供了一個簡便的創建方式。當然,一個enum的constructor必須是private的,因為只有enum內部可以聲明enum可能取的值。

⑵ java枚舉到底是什麼鬼

創建枚舉類型要使用 enum 關鍵字,隱含了所創建的類型都是 java.lang.Enum 類的子類(java.lang.Enum 是一個抽象類)。枚舉類型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚舉類型的名稱。枚舉類型的每一個值都將映射到 protected Enum(String name, int ordinal) 構造函數中,在這里,每個值的名稱都被轉換成一個字元串,並且序數設置表示了此設置被創建的順序。
cankao:
http://www.cnblogs.com/hemingwang0902/archive/2011/12/29/2306263.html

⑶ 請問java枚舉的用法有哪些。

枚舉就是把集合里的對象元素 一個一個提取出來!比如說 你買了一合巧克力 裡面有草莓味的 有香草口味的 有蘋果口味的 你想把他們拿出來 就必須用「手」一個一個把他們拿出來 並且一次只能取一個哦,這里的手就是枚舉器 你取的動作就是枚舉的過程 。

具體的用法 這個我就不好說了推薦你看看JDK1.5的API和參考別人的範例
看完了基本可以理解枚舉幾種選擇(有迭代器和枚舉器2種)和如何判斷是否已經取完了對象元素 等等 。
希望可以幫到你,謝謝!

⑷ java枚舉

這個枚舉裡面寫了如下方法public
abstract
TrafficLamp
nextLamp();
以上為一個抽象方法,需要實現的,所以下面的RED有方法體(匿名類的概念),是為了實現抽象方法。
RED(30){
public
TrafficLamp
nextLamp(){
return
GREEN;
}
而30是傳入int參數,因為下面寫了有參的構造方法:
private
int
time;
private
TrafficLamp(int
time){this.time
=
time;
time=30這是RED的一個屬性。
你可以把枚舉看做一個類,而它的每個實例都是該類的對象,而且此對象是不可變的。

⑸ Java中的枚舉是什麼他的具體用法是什麼呢

Java中的枚舉是什麼?他的具體用法是什麼呢?
枚舉就是把集合里的對象元素
一個一個提取出來!比如說
你買了一合巧克力
裡面有草莓味的
有香草口味的
有蘋果口味的
你想把他們拿出來
就必須用「手」一個一個把他們拿出來
並且一次只能取一個哦
這里的手就是枚舉器
你取的動作就是枚舉的過程
具體的用法
這個我就不好說了
推薦
你看看JDK1.5的API和參考別人的範例
看完了
基本可以理解
枚舉幾種選擇(有迭代器和枚舉器2種)和如何判斷是否已經取完了對象元素
等等
我不是很喜歡講語法
所以不好意思我就不給你丟代碼了~

⑹ java中能將字元串賦給枚舉類型嗎怎樣用switch代替if-else

if可以放到switch裡面用,也能放外面。如:if(true){switch(abc){case:"1":test="1"; 在這里可以加if判斷代碼。break;}}

⑺ java枚舉類型

java 枚舉類型enum 的使用
最近跟同事討論問題的時候,突然同事提到我們為什麼java 中定義的常量值不採用enmu 枚舉類型,而採用public final static 類型來定義呢?以前我們都是採用這種方式定義的,很少採用enum 定義,所以也都沒有注意過,面對突入起來的問題,還真有點不太清楚為什麼有這樣的定義。既然不明白就抽時間研究下吧。
Java 中的枚舉類型採用關鍵字enum 來定義,從jdk1.5才有的新類型,所有的枚舉類型都是繼承自Enum 類型。要了解枚舉類型,建議大家先打開jdk 中的Enum類簡單讀一下,這個類裡面定義了很多protected 方法,比如構造函數,如果要使用這些方法我們可以把枚舉類型定義到當前類中。每個枚舉類型,都有自己的名字和順序,當我們輸出一個枚舉類型的時候,會輸入枚舉類型的name ,具體可以參考下面的例子。
一、 通常定義常量方法
我們通常利用public final static 方法定義的代碼如下,分別用1 表示紅燈,3 表示綠燈,2 表示黃燈。

package com.csdn.myEnum;
public class Light {
/* 紅燈 */
public final static int RED =1;
/* 綠燈 */
public final static int GREEN =3;
/* 黃燈 */
public final static int YELLOW =2;
}

二、 枚舉類型定義常量方法
枚舉類型的簡單定義方法如下,我們似乎沒辦法定義每個枚舉類型的值。比如我們定義紅燈、綠燈和黃燈的代碼可能如下:

public enum Light {
RED , GREEN , YELLOW ;
}

我們只能夠表示出紅燈、綠燈和黃燈,但是具體的值我們沒辦法表示出來。別急,既然枚舉類型提供了構造函數,我們可以通過構造函數和覆寫toString方法來實現。首先給Light 枚舉類型增加構造方法,然後每個枚舉類型的值通過構造函數傳入對應的參數,同時覆寫toString 方法,在該方法中返回從構造函數中傳入的參數,改造後的代碼如下:

public enum Light {
// 利用構造函數傳參
RED (1), GREEN (3), YELLOW (2);

// 定義私有變數
private int nCode ;

// 構造函數,枚舉類型只能為私有
private Light( int _nCode) {
this . nCode = _nCode;
}

@Override
public String toString() {
return String.valueOf ( this . nCode );
}
}

三、 完整示例代碼
枚舉類型的完整演示代碼如下:

package com.csdn.myEnum;

import java.util.EnumMap;
import java.util.EnumSet;

public class LightTest {

// 1. 定義枚舉類型
public enum Light {
// 利用構造函數傳參
RED (1), GREEN (3), YELLOW (2);

// 定義私有變數
private int nCode ;

// 構造函數,枚舉類型只能為私有
private Light( int _nCode) {
this . nCode = _nCode;
}

@Override
public String toString() {
return String.valueOf ( this . nCode );
}
}

/**
* @param args
*/
public static void main(String[] args ) {

// 1. 遍歷枚舉類型
System. out .println( " 演示枚舉類型的遍歷 ......" );
testTraversalEnum ();

// 2. 演示 EnumMap 對象的使用
System. out .println( " 演示 EnmuMap 對象的使用和遍歷 ....." );
testEnumMap ();

// 3. 演示 EnmuSet 的使用
System. out .println( " 演示 EnmuSet 對象的使用和遍歷 ....." );
testEnumSet ();
}

/**
* 演示枚舉類型的遍歷
*/
private static void testTraversalEnum() {
Light[] allLight = Light.values ();
for (Light aLight : allLight) {
System. out .println( " 當前燈 name : " + aLight.name());
System. out .println( " 當前燈 ordinal : " + aLight.ordinal());
System. out .println( " 當前燈: " + aLight);
}
}

/**
* 演示 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不過 key 要是枚舉類型
*/
private static void testEnumMap() {
// 1. 演示定義 EnumMap 對象, EnumMap 對象的構造函數需要參數傳入 , 默認是key 的類的類型
EnumMap<Light, String> currEnumMap = new EnumMap<Light, String>(
Light. class );
currEnumMap.put(Light. RED , " 紅燈 " );
currEnumMap.put(Light. GREEN , " 綠燈 " );
currEnumMap.put(Light. YELLOW , " 黃燈 " );

// 2. 遍歷對象
for (Light aLight : Light.values ()) {
System. out .println( "[key=" + aLight.name() + ",value="
+ currEnumMap.get(aLight) + "]" );
}
}

/**
* 演示 EnumSet 如何使用, EnumSet 是一個抽象類,獲取一個類型的枚舉類型內容<BR/>
* 可以使用 allOf 方法
*/
private static void testEnumSet() {
EnumSet<Light> currEnumSet = EnumSet.allOf (Light. class );
for (Light aLightSetElement : currEnumSet) {
System. out .println( " 當前 EnumSet 中數據為: " + aLightSetElement);
}

}
}

執行結果如下:

演示枚舉類型的遍歷 ......
當前燈 name : RED
當前燈 ordinal : 0
當前燈: 1
當前燈 name : GREEN
當前燈 ordinal : 1
當前燈: 3
當前燈 name : YELLOW
當前燈 ordinal : 2
當前燈: 2
演示 EnmuMap 對象的使用和遍歷 .....
[key=RED,value= 紅燈 ]
[key=GREEN,value= 綠燈 ]
[key=YELLOW,value= 黃燈 ]
演示 EnmuSet 對象的使用和遍歷 .....
當前 EnumSet 中數據為: 1
當前 EnumSet 中數據為: 3
當前 EnumSet 中數據為: 2

四、 通常定義常量方法和枚舉定義常量方法區別
以下內容可能有些無聊,但絕對值得一窺
1. 代碼:
public class State {
public static final int ON = 1;
public static final Int OFF= 0;
}

有什麼不好了,大家都這樣用了很長時間了,沒什麼問題啊。
首先,它不是類型安全的。你必須確保是int
其次,你還要確保它的范圍是0 和1
最後,很多時候你列印出來的時候,你只看到 1 和0 ,

但其沒有看到代碼的人並不知道你的企圖,拋棄你所有舊的public static final 常量
2. 可以創建一個enum 類,把它看做一個普通的類。除了它不能繼承其他類了。(java 是單繼承,它已經繼承了Enum),
可以添加其他方法,覆蓋它本身的方法
3. switch() 參數可以使用enum 了
4. values() 方法是編譯器插入到enum 定義中的static 方法,所以,當你將enum 實例向上轉型為父類Enum 是,values() 就不可訪問了。解決辦法:在Class中有一個getEnumConstants() 方法,所以即便Enum 介面中沒有values() 方法,我們仍然可以通過Class 對象取得所有的enum 實例
5. 無法從enum 繼承子類,如果需要擴展enum 中的元素,在一個介面的內部,創建實現該介面的枚舉,以此將元素進行分組。達到將枚舉元素進行分組。
6. 使用EnumSet 代替標志。enum 要求其成員都是唯一的,但是enum 中不能刪除添加元素。
7. EnumMap 的key 是enum ,value 是任何其他Object 對象。
8. enum 允許程序員為eunm 實例編寫方法。所以可以為每個enum 實例賦予各自不同的行為。
9. 使用enum 的職責鏈(Chain of Responsibility) . 這個關繫到設計模式的職責鏈模式。以多種不同的方法來解決一個問題。然後將他們鏈接在一起。當一個請求到來時,遍歷這個鏈,直到鏈中的某個解決方案能夠處理該請求。
10. 使用enum 的狀態機
11. 使用enum 多路分發

⑻ java枚舉類型

InitParameter是在web.xml中配置的Servlet初始參數,採用:
<init-param></init-param>形式寫入。
Enumeration是一個枚舉介面,遍歷枚舉就能得到init-param參數名稱,如:
while
(enums.hasMoreElements
())
{
String
paramName
=
(String)
enums.nextElement
()
;
String
paramValue
=
getInitParameterValue
(paramName)
;
...
other
process
here..
}

⑼ java中的枚舉是什麼意思

Java的Enumeration(枚舉,注釋②)便是具有這些限制的一個反復器的例子。除下面這些外,不可再用它做其他任何事情:
(1)
用一個名為elements()的方法要求集合為我們提供一個Enumeration。我們首次調用它的nextElement()時,這個Enumeration會返回序列中的第一個元素。
(2)
用nextElement()獲得下一個對象。
(3)
用hasMoreElements()檢查序列中是否還有更多的對象。
②:「反復器」這個詞在C++和OOP的其他地方是經常出現的,所以很難確定為什麼Java的開發者採用了這樣一個奇怪的名字。Java
1.2的集合庫修正了這個問題以及其他許多問題。

⑽ java枚舉型的值都是字元串嗎

可以是整型,順便給你我總結的枚舉。
1.枚舉對象裡面的值都必須是唯一的,enum 中不能刪除添加元素。

2.元素是公有靜態的public static,構造方法只能為private。

2.可以通過 Enum 類名直接引用該常量,如Unit.u1

3.允許程序員為eunm 實例編寫方法,如果打算自定義自己的方法,那麼必須在enum實例序列的最後添加一個分號。而且 Java 要求必須先定義 enum 實例,否則編譯器會報錯。

4.可以創建一個enum 類,把它看做一個普通的類(可以有抽象方法)。可以添加其他方法,覆蓋它本身的方法。

5.values() 方法是編譯器插入到enum 定義中的static 方法,所以,當你將enum 實例向上轉型為父類Enum 是,values() 就不可訪問了。

6.所有enum都繼承java.lang.Enum類。

7.所有枚舉類都提供一個靜態的values()方法(返回該枚舉類所有對象組成的數組),便於遍歷所有枚舉對象。

for (Unit u: Unit.values()) {
System.out.println(u); }

熱點內容
逆向ob編譯 發布:2022-11-28 00:33:55 瀏覽:930
碳收集和存儲 發布:2022-11-28 00:32:00 瀏覽:160
壓縮打包後再解壓 發布:2022-11-28 00:31:49 瀏覽:597
百度雲可以解壓嗎 發布:2022-11-28 00:31:42 瀏覽:114
android藍牙連接狀態 發布:2022-11-28 00:25:54 瀏覽:181
怎麼給手機刷原生安卓系統 發布:2022-11-28 00:25:05 瀏覽:705
集結號伺服器搭建維護 發布:2022-11-28 00:23:13 瀏覽:667
c語言6f 發布:2022-11-28 00:23:00 瀏覽:522
講座的視頻腳本 發布:2022-11-28 00:22:46 瀏覽:892
編譯原理表達式文法 發布:2022-11-28 00:21:57 瀏覽:253