『壹』 java的枚舉值能不能用==比較
一般在Java代碼裡面,涉及到比較2個值的問題,除了是簡單的一般數據類型意外,字元串除外,我們都是使用==來判斷是否相等的,但是對於字元串和對象以及封裝類型的數據都是使用equals方法,來判斷2個值是否相等。所以,當我看到別人的代碼中,枚舉類型變數,直接使用==,來判斷是不是相等,很是詫異。然後就有了下面的調查和測試。
先看測試代碼:
[java]view plain
/**
*測試枚舉比較,使用equal和==
*/
(){
GameEnums1=GameEnum.BIG;
GameEnums2=GameEnum.BIG;
GameEnumss1=GameEnum.SMALL;
System.out.println("s1==s2:"+(s1==s2));
System.out.println("s1.equals(s2):"+(s1.equals(s2)));
System.out.println("s1==ss1:"+(s1==ss1));
System.out.println("s1.equals(ss1):"+(s1.equals(ss1)));
}
再看使用的枚舉代碼:[java]view plain
/**
*Createdbylxkon2017/2/23
*/
publicenumGameEnum{
BIG,
SMALL,
FATTER
}
最後是代碼執行的結果圖:『貳』 java5中的枚舉與字元串數組的區別
隨著計算機的不斷普及,程序不僅只用於數值計算,還更廣泛地用於處理非數值的數據。例如:性別、月份、星期幾、顏色、單位名、學歷、職業等,都不是數值數據。在其它程序設計語言中,一般用一個數值來代表某一狀態,這種處理方法不直觀,易讀性差。如果能在程序中用自然語言中有相應含義的單詞來代表某一狀態,則程序就很容易閱讀和理解。也就是說,事先考慮到某一變數可能取的值,盡量用自然語言中含義清楚的單詞來表示它的每一個值,這種方法稱為枚舉方法,用這種方法定義的類型稱枚舉類型
『叄』 Java中枚舉類型怎麼賦值
publicenumPath{
PATH1("/home/acer/logs1"),
PATH2("/home/acer/logs2"),
PATH3("/home/acer/logs3"),
PATH4("/home/acer/logs4");
privateStringpath;
Path(Stringpath){
this.path=path;
}
publicStringgetPath(){
returnpath;
}
//測試方法
publicstaticvoidmain(String[]args){
System.out.println(Path.PATH1.getPath());
System.out.println(Path.PATH2.getPath());
System.out.println(Path.PATH3.getPath());
System.out.println(Path.PATH4.getPath());
}
}
『肆』 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中能將字元串賦給枚舉類型嗎怎樣用switch代替if-else
if可以放到switch裡面用,也能放外面。如:if(true){switch(abc){case:"1":test="1"; 在這里可以加if判斷代碼。break;}}
『陸』 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); }
『柒』 java枚舉的幾種用法
用法一:常量
在JDK1.5 之前,我們定義常量都是: public static fianl.... 。現在好了,
有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供了比常量更多的方法。
Java代碼
public enum Color {
RED, GREEN, BLANK, YELLOW
}
用法二:switch
JDK1.6之前的switch語句只支持int,char,enum類型,使用枚舉,能讓我們的代碼可讀性更強。
Java代碼
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}
用法三:向枚舉中添加新方法
如果打算自定義自己的方法,那麼必須在enum實例序列的最後添加一個分號。而且 Java 要求必須先定義 enum 實例。
Java代碼
public enum Color {
RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);
// 成員變數
private String name;
private int index;
// 構造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
用法四:覆蓋枚舉的方法
下面給出一個toString()方法覆蓋的例子。
Java代碼
public enum Color {
RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);
// 成員變數
private String name;
private int index;
// 構造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//覆蓋方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}
用法五:實現介面
所有的枚舉都繼承自java.lang.Enum類。由於Java 不支持多繼承,所以枚舉對象不能再繼承其他類。
Java代碼
public interface Behaviour {
void print();
String getInfo();
}
public enum Color implements Behaviour{
RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);
// 成員變數
private String name;
private int index;
// 構造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//介面方法
@Override
public String getInfo() {
return this.name;
}
//介面方法
@Override
public void print() {
System.out.println(this.index+":"+this.name);
}
}
用法六:使用介面組織枚舉
Java代碼
public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}
private static void testImplementsInterface() {
for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) {
System.out.print(dessertEnum + " ");
}
System.out.println();
//我這地方這么寫,是因為我在自己測試的時候,把這個coffee單獨到一個文件去實現那個food介面,而不是在那個介面的內部。
for (CoffeeEnum coffee : CoffeeEnum.values()) {
System.out.print(coffee + " ");
}
System.out.println();
//搞個實現介面,來組織枚舉,簡單講,就是分類吧。如果大量使用枚舉的話,這么干,在寫代碼的時候,就很方便調用啦。
//還有就是個「多態」的功能吧,
Food food = Food.DessertEnum.CAKE;
System.out.println(food);
food = CoffeeEnum.BLACK_COFFEE;
System.out.println(food);
}
『捌』 java 如何將String 轉換成 枚舉
你Student類設計肯定有問題,你類里應該有 性別成員變數並且提供set/get方法,然後你可以在你Student類里添加一個枚舉。如:
public class Student {
private String sex;
public void setSex(String sex) {
...
}
public String getSex() {
}
public enum Sex {
...
}
}
『玖』 java如何用方法toString()將枚舉類型轉換為字元串類型
枚舉類
public enum Vegetable
{
Apple=1,
Banana=2,
Orange=3
}
String Banana=Vegetable.Banana.ToString();