Java 菜鳥(niǎo)教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 枚舉(Enum)

在本教程中,我們將學(xué)習(xí)Java中的枚舉。我們將在示例的幫助下學(xué)習(xí)創(chuàng)建和使用枚舉和枚舉類。

在Java中,枚舉是一種具有固定的可能值集的類型。我們使用enum關(guān)鍵字來(lái)聲明枚舉。例如,

enum Size { 
   SMALL, MEDIUM, LARGE, EXTRALARGE 
}

在這里,我們創(chuàng)建了一個(gè)名為Size的枚舉。

花括號(hào)內(nèi)的值稱為枚舉值(常量)。這些是枚舉類型可以保留的唯一值。

注意:枚舉常量通常以大寫(xiě)形式表示。

讓我們舉一個(gè)簡(jiǎn)單的實(shí)例。

enum Size {
   SMALL, MEDIUM, LARGE, EXTRALARGE
}

class Main {
   public static void main(String[] args) {
      System.out.println(Size.SMALL);
      System.out.println(Size.MEDIUM);
   }
}

輸出結(jié)果

SMALL
MEDIUM

從上面的示例可以看出,我們使用枚舉名稱訪問(wèn)常量值。

同樣,我們可以創(chuàng)建枚舉類型的變量。例如,

Size pizzaSize;

在這里,pizzaSize是Size類型的變量。它只能分配4個(gè)值。

pizzaSize = Size.SMALL;
pizzaSize = Size.MEDIUM;
pizzaSize = Size.LARGE;
pizzaSize = Size.EXTRALARGE;

示例1:Java枚舉

enum Size {
 SMALL, MEDIUM, LARGE, EXTRALARGE
}

class Test {
 Size pizzaSize;
 public Test(Size pizzaSize) {
   this.pizzaSize = pizzaSize;
 }
 public void orderPizza() {
   switch(pizzaSize) {
     case SMALL:
       System.out.println("我點(diǎn)了一個(gè)小號(hào)比薩餅。");
       break;
     case MEDIUM:
       System.out.println("我點(diǎn)了一個(gè)中號(hào)的披薩。");
       break;
     default:
       System.out.println("我不知道該點(diǎn)哪一種。");
       break;
   }
 }
}

class Main {
 public static void main(String[] args) {
   Test t1 = new Test(Size.MEDIUM);
   t1.orderPizza();
 }
}

輸出結(jié)果

我點(diǎn)了一個(gè)中號(hào)的披薩。

在上面的程序中,我們創(chuàng)建了一個(gè)枚舉類型Size。然后,我們聲明Size類型的變量pizzaSize。

變量pizzaSize只能分配4個(gè)值(SMALL,MEDIUM,LARGE,EXTRALARGE)。

變量pizzaSize分配了MEDIUM常數(shù)。 基于此,將打印switch case語(yǔ)句的一種情況。

Java枚舉類

在Java中,枚舉類型被認(rèn)為是類的一種特殊類型。它是在Java 5發(fā)行版中引入的。

枚舉類可以像常規(guī)類一樣包含方法和字段。

enum Size {
    constant1, constant2, …, constantN;

    //方法和字段
}

枚舉常量始終默認(rèn)為public static final。

當(dāng)創(chuàng)建enum類時(shí),編譯器還將創(chuàng)建每個(gè)enum常量的實(shí)例(對(duì)象)。

示例2:枚舉類

enum Size{
   SMALL, MEDIUM, LARGE, EXTRALARGE;

   public String getSize() {

      //這將引用對(duì)象SMALL
      switch(this) {
         case SMALL:
          return "small";

         case MEDIUM:
          return "medium";

         case LARGE:
          return "large";

         case EXTRALARGE:
          return "extra large";

         default:
          return null;
      }
   }

   public static void main(String[] args) {

      //使用對(duì)象SMALL調(diào)用方法getSize()
      System.out.println("披薩的大小是 " + Size.SMALL.getSize());
   }
}

輸出結(jié)果

披薩的大小是 small

在上面的示例中,我們創(chuàng)建了一個(gè)枚舉類 Size。它有四個(gè)常數(shù) SMALL,MEDIUM,LARGE和EXTRALARGE。

由于Size是枚舉類,因此編譯器會(huì)自動(dòng)為每個(gè)枚舉常量創(chuàng)建實(shí)例。

在main()方法內(nèi)部,我們已使用實(shí)例SMALL調(diào)用getSize()方法。

像常規(guī)類一樣,枚舉類也可以包含構(gòu)造函數(shù)。要了解更多信息,請(qǐng)?jiān)L問(wèn)Java枚舉構(gòu)造函數(shù)。

枚舉類的方法

枚舉類中有一些預(yù)定義的方法可以隨時(shí)使用。

ordinal()方法

ordinal()方法返回枚舉常量的位置。例如,

ordinal(SMALL) 
//返回 0

compareTo()方法

compareTo()方法根據(jù)序數(shù)值比較枚舉常量。例如,

Size.SMALL.compareTo(Size.MEDIUM)
 //返回 ordinal(SMALL) - ordinal(MEDIUM)

toString()方法

toString()方法返回枚舉常量的字符串表示形式。例如,

SMALL.toString()
//返回 "SMALL"

name()方法

name()方法以字符串形式返回枚舉常量的定義名稱。name()方法返回的值為final。例如,

name(SMALL)
//返回 "SMALL"

valueOf()方法

valueOf()方法采用字符串,并返回具有相同字符串名稱的枚舉常量。例如,

Size.valueOf("SMALL")
//返回常量 SMALL

values()方法

values()方法返回包含所有枚舉常量的枚舉類型數(shù)組。例如,

Size[] enumArray = Size.value();

為什么使用Java枚舉?

在Java中,引入了enum來(lái)代替int常量的使用。

假設(shè)我們使用了int常量集合。

class Size {
   public final static int SMALL = 1;
   public final static int MEDIUM = 2;
   public final static int LARGE = 3;
   public final static int EXTRALARGE = 4;
}

 這里,如果我們打印常量,問(wèn)題就出現(xiàn)了。這是因?yàn)橹淮蛴?shù)字,這可能沒(méi)有幫助。

因此,我們可以簡(jiǎn)單地使用枚舉,代替使用int常量。例如,

enum Size {
   SMALL, MEDIUM, LARGE, EXTRALARGE
}

這使我們的代碼更加直觀。

同樣,枚舉提供了編譯時(shí)類型的安全性。

如果我們聲明Size類型的變量(如上述示例中所示),則可以確保該變量將容納四個(gè)值之一。如果我們嘗試傳遞這四個(gè)值以外的值,則編譯器將拋出錯(cuò)誤。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清