1. 枚舉的屬性和方法
枚舉在Java中是一個類 ,代表著類的一一列舉。要想知道枚舉具體的使用首先要先知道它的具體的 屬性 和 方法 才可以。雖然說我們在實際應用中很少去關注它的屬性和方法,而是更多的關注它的 特性 ,利用它本身的特性去滿足各種有意思的場景。
由於上篇內容講了我們自定義的枚舉其實經過編譯之後,實際繼承的是lang包下的Enum類。雖然我們自定義的枚舉類中可能存在不定義私有屬性的情況,但繼承的Enum類中自身就帶有著兩個屬性,name屬性、和ordinal屬性。Enum類的源碼
name為我們枚舉值的名稱,而ordinal這個詞的意思是「序數」或者說「有順序的」,其實就是序數。我們知道枚舉所代表的就是包含一個以上枚舉值的集合,既然是集合它就是有順序的,而大多數我們使用的時候往往忽略了它的序數這個屬性,似乎忘了枚舉是枚舉這件事了。
枚舉中的序號是根據我們的枚舉中顯滲或示的順序決定的,其實是是語法糖轉換時初始化枚舉值時決定了枚舉值的序數,枚舉中,第一個枚舉值的序數總是小於後面枚舉值的序數,且序數是從0開始的。
接著上面講的序數ordinal,針對序數我們先講枚舉的values()方法。
作含殲為一個枚舉值的集合,所必須要有的操作肯定是遍歷,這也是靜態常量所沒有的支持的。values()其實就是獲取我們枚舉值的數組:
雖然我們自定義的枚舉類是可以使用這個方法的,但繼承的Enum類卻沒有這個方法,其實values()這個方法是很特殊的一個方法,之前說過枚舉是一種語法糖,在它真正編譯後,就會產生values()這個方法,所以我們自定義的枚舉類是可以使用這個方法的,而且values()方法所返回的其實是一個淺拷貝;
前面說到枚舉有兩個屬性,name和ordinal,但實際上枚舉只提供了根據name來獲取具體枚舉值的方法,卻沒有提供根據ordinal來獲取具體枚舉值的方法,但是values()方法也算是另外一種彌補了,根據values()得到的數據再根據ordinal序數獲取具體的枚舉值其實也是一樣的效果。valueOf()方法就是那個根據name獲取具體枚舉值的方法,使用案例:
可選叢老伍姿勢為兩種,一參和兩參,具體看案例。
2. php如何枚舉二維數組的鍵名跟值
$arr = array('a'=>111,'b'=>222,'c'=>333);foreach($arr as $k=>$v){ echo "鍵名 {$k} 的值為 {$v}";}
3. PHP字元串枚舉
代碼示例如下圖供參考:
<?php
$str仔祥岩='abcde';
$a=str_split($str);
perm($a,0,count($a)-1);
functionperm(&$ar,$k,$m){
if($k==$m){
echojoin('',$ar).'<br/>';
}else{
for($i=$k;$i<=$m;$i++){
宴談swap($ar[$k],$ar[$i]);
perm($ar,$k+1,$m);
swap($ar[$k],$ar[$i]);
}
}
}
functionswap(&$a,&$b){
$c=$a;
$a=$b;
念御$b=$c;
}
?>
運行截圖:
4. 枚舉類型enum用法
枚舉類型enum的用法如下文所示: