❶ 用java實現 枚舉從數組arr中取n個數,組成新數組的所有情況
使用嵌套for循環即可完成,原理可以參考冒泡排序。
❷ java怎麼遍歷一個枚舉數組的所有集合
每個問題只來有對、錯2種情況的話,自每個問題相當於1個bit。
10個問題就是10個bit
循環從0到0b11111 11111,逐個列印數字
即從0到1023循環
for(int i=0;i<1024;i++){
System.out.println(i); //每個i保留10個bit,這10個bit的每個bit就代表每個問題的對錯
}
比如
1000這個值,二進制為1111101000
可以理解成「對對對對對錯對錯錯錯」
0理解成00000 00000,代表全錯
1023理解成11111 11111代表全對
從0到1023就是所有的可能
這是最高效節省的表示法。
❸ Java中如何調用枚舉類中的數組
values()是枚舉定義的一個靜態方法。
示例代碼:
enum A{
b,a;
}
static final class A extends Enum{
public static A[] values(){
A aa[];
int i;
A aa1[];
System.array(aa = ENUM$VALUES, 0, aa1 = new A[i = aa.length], 0, i);
return aa1;
}
public static A valueOf(String s){
return (A)Enum.valueOf(com/taobao/et/biz/Test$A, s);
}
public static final A b;
public static final A a;
private static final A ENUM$VALUES[];
static {
b = new A("b", 0);
a = new A("a", 1);
ENUM$VALUES = (new A[] {
b, a
});
}
private A(String s, int i) {
super(s, i);
}
}
兩個靜態方法「隱藏」在所有枚舉類型聲明中。因為它們是枚舉子類上的靜態方法,而不是Enum本身的方法,所以它們在java.lang.Enum的javadoc中沒有出現。
第一個是values(),返回一個枚舉類型所有可能值的數組。
第二個是valueOf(String arg0),為提供的字元串返回一個枚舉類型,該枚舉類型必須精確地匹配源代碼聲明。
❹ java 枚舉數組的問題
values()是枚舉定義的一個靜態方法。
示例代碼:
enum A{
b,a;
}
static final class A extends Enum{
public static A[] values(){
A aa[];
int i;
A aa1[];
System.array(aa = ENUM$VALUES, 0, aa1 = new A[i = aa.length], 0, i);
return aa1;
}
public static A valueOf(String s){
return (A)Enum.valueOf(com/taobao/et/biz/Test$A, s);
}
public static final A b;
public static final A a;
private static final A ENUM$VALUES[];
static {
b = new A("b", 0);
a = new A("a", 1);
ENUM$VALUES = (new A[] {
b, a
});
}
private A(String s, int i) {
super(s, i);
}
}
兩個靜態方法「隱藏」在所有枚舉類型聲明中。因為它們是枚舉子類上的靜態方法,而不是Enum本身的方法,所以它們在java.lang.Enum的javadoc中沒有出現。
第一個是values(),返回一個枚舉類型所有可能值的數組。
第二個是valueOf(String arg0),為提供的字元串返回一個枚舉類型,該枚舉類型必須精確地匹配源代碼聲明。
❺ java中的枚舉應該怎樣深刻理解
枚舉是一種規范它規范了參數的形式,這樣就可以不用考慮類型的不匹配並且顯式的替代了int型參數可能帶來的模糊概念 枚舉像一個類,又像一個數組。
Enum作為Sun全新引進的一個關鍵字,看起來很象是特殊的class, 它也可以有自己的變數,可以定義自己的方法,可以實現一個或者多個介面。 當我們在聲明一個enum類型時,我們應該注意到enum類型有如下的一些特徵。
1.它不能有public的構造函數,這樣做可以保證客戶代碼沒有辦法新建一個enum的實例。
2.所有枚舉值都是public , static , final的。注意這一點只是針對於枚舉值,我們可以和在普通類裡面定義 變數一樣定義其它任何類型的非枚舉變數,這些變數可以用任何你想用的修飾符。
3.Enum默認實現了java.lang.Comparable介面。
4.Enum覆載了了toString方法,因此我們如果調用Color.Blue.toString()默認返回字元串」Blue」.
5.Enum提供了一個valueOf方法,這個方法和toString方法是相對應的。調用valueOf(「Blue」)將返回Color.Blue.因此我們在自己重寫toString方法的時候就要注意到這一點,一把來說應該相對應地重寫valueOf方法。
6.Enum還提供了values方法,這個方法使你能夠方便的遍歷所有的枚舉值。
7.Enum還有一個oridinal的方法,這個方法返回枚舉值在枚舉類種的順序,這個順序根據枚舉值聲明的順序而定,這里Color.Red.ordinal()返回0。
❻ 在java中怎麼取出數組中的數據
1.方法:
public final synchronized void setsize(int newsize);
此方法用來定義向量的大小,若向量對象現有成員個數已經超過了newsize的值,則超專過部分的多餘元素會屬丟失。
2.程序中定義Enumeration類的一個對象Enumeration是java.util中的一個介面類,
在Enumeration中封裝了有關枚舉數據集合的方法。
在Enumeration提供了方法hasMoreElement()來判斷集合中是否還有其他元素和方法nextElement()來判斷集合中是否還有其他元素和方法nextElement()來獲取下一個元素。利用這兩個方法,可以依次獲得集合中的元素。
3.Vector中提供方法:
public final synchronized Enumeration elements();
此方法將向量對象對應到一個枚舉類型。java.util包中的其他類中也都有這類方法,以便於用戶獲取對應的枚舉類型。
❼ java5中的枚舉與字元串數組的區別
隨著計算復機的不斷普及,程序制不僅只用於數值計算,還更廣泛地用於處理非數值的數據。例如:性別、月份、星期幾、顏色、單位名、學歷、職業等,都不是數值數據。在其它程序設計語言中,一般用一個數值來代表某一狀態,這種處理方法不直觀,易讀性差。如果能在程序中用自然語言中有相應含義的單詞來代表某一狀態,則程序就很容易閱讀和理解。也就是說,事先考慮到某一變數可能取的值,盡量用自然語言中含義清楚的單詞來表示它的每一個值,這種方法稱為枚舉方法,用這種方法定義的類型稱枚舉類型
❽ java 的枚舉可以用泛型嗎
有!
泛型和枚舉都是JDK1.5版本之後加入的新特性,泛型將程序代碼的類型檢查提前到了編譯期間進行,枚舉類型增強了程序代碼的健壯性。
1. 泛型
在JDK1.5版本之前,如果在集合中添加了不同類型的數據,需要在程序的運行期間對類型之間的轉換進行檢查。
例如:
List arrayList=new arrayList();
在arrayList中添加String類型的對象和Integer對象,但是我們定義如下一個數組
String[] values=new String[arrayList.size()];
如果想要把arrayList轉換成數組的話就會出現錯誤:
arrayList.toArray(values);//運行期間錯誤
這是因為List中包含了整型封裝類型的對象。但是該錯誤只能在運行期間才能發現,程序能夠正常的通過編譯,並不會報錯。
對於程序中出現的錯誤,應該盡早的通知程序員。泛型能夠很好地解決這個問題。
1.1 泛型在集合中的應用
在JDK1.5版本之後Java提供了對泛型的支持。例如對於一個ArrayList列表來說,如果只想在列表中放入String類型元素,可以用下面的方法來實現:
ArrayList<String> list=new ArrayList<String>();
泛型使得編譯器能夠在編譯期間對集合中加入的對象進行檢查,如果加入了不同類型的對象,就會報錯,而不必等到運行期間再進行相關的類型轉換。
和原來沒有使用泛型相比,它將原來需要在運行時期才能發現的異常提前到了編譯期間,使得程序的安全性也大大提高,泛型一般用於集合類中。
1.2 泛型類和泛型方法
泛型類的定義如下:在類名的後面加上一對尖括弧("<>"),在尖括弧內部填入需要的類型。例如:
class Point< T>{ // 此處可以隨便寫標識符號,T是type的簡稱
private T var ; // var的類型由T指定,即:由外部指定
public T getVar(){ // 返回值的類型由外部決定 ,泛型方法
return var ;
}
public void setVar(T var){ // 設置的類型也由外部決定
this.var = var ;
}
};
public class GenericsDemo06{
public static void main(String args[]){
Point< String> p = new Point< String>() ; // 裡面的var類型為String類型
p.setVar("it") ; // 設置字元串
System.out.println(p.getVar().length()) ; // 取得字元串的長度
}
}; 2.枚舉
枚舉也是JDK1.5之後的版本以後Java新加入的特性。使用枚舉可以表示一組常量數據。枚舉的本質是一個類,可以使用enum關鍵字來聲明一個枚舉類型,其聲明方式如下:
[訪問控制符] enum 枚舉類型名{value1,value2,......}
使用枚舉類型需要注意以下幾點:
枚舉類型可以定義在類的內部也可以定義在類的外部。如果定義在類的內部,那麼其訪問控制符可以是public,protected,private或者默認的控制符。如果定義在類的外部,其訪問控制符只能是public和默認控制符;
枚舉類型中定義的value值都默認為public static final的。其值一經定義就不能在被修改了。多個value值之間需要用逗號隔開;
枚舉類型中除了可以聲明常量之外還可以聲明方法。但是方法需要在常量之後,並且常量和方法之間要用分號區分;
枚舉類型中的值可以通過枚舉類型名直接對他們進行訪問;
枚舉類型不能聲明為abstract或者final類型;
例:
public enum Direction{
FORWARD,
BACK,
LEFT;
public void start(){
System.out.println("enum method");
}
}
2.1 枚舉類型的常用方法
public final String name()//返回枚舉常量的名稱;
public final int ordinal()//返回枚舉常量在枚舉類型中的位置,第一個枚舉值序號為0,依次類推;
public String toString()//返回枚舉常量的名字,可以重寫此方法;
public static valueOf(enumType,String name)//返回與name名字相對應的枚舉常量;