Java - 列舉字串
你好,有抱負的Java程序設計師!今天,我們將深入探討Java中的列舉字串(Enum Strings)的迷人世界。如果你完全是编程新手,也別擔心——我會一步步引導你,就像我過去幾年教學中為無數學生所做的那樣。那麼,讓我們一起踏上這個激動人心的旅程吧!
列舉是什麼?
在我們深入探討列舉字串之前,先從基礎開始。列舉(Enums),是"enumerations"的縮寫,在Java中是一種特殊的類型,代表一組固定的常量。把它們想成一個預定義的選項清單,在你的程序運行過程中不會改變。
想像一下你在為一家咖啡店創建一個程序。你可能會有固定的杯型大小:小(SMALL)、中(MEDIUM)和大(LARGE)。這就是使用列舉的完美場景!
以下是這個列舉的定義方式:
public enum 杯型 {
小,
中,
大
}
現在,讓我們看看如何在我們的代碼中使用這個列舉:
public class 咖啡店 {
public static void main(String[] args) {
杯型 我的訂單 = 杯型.中;
System.out.println("我想要一杯" + 我的訂單 + "咖啡,請!");
}
}
當你運行這段代碼時,它將輸出:"我想要一杯中咖啡,請!"
列舉字串:深入觀察
現在我們已經瞭解了列舉是什麼,接下來讓我們來探索列舉字串。默認情況下,當你列印一個列舉值時,Java會使用其名稱作為字串。但是,如果你想要自定義你的列舉值如何作為字串表示呢?
這就是 toString()
方法派上用場的地方。讓我們增強我們的 杯型
列舉,以提供更具描述性的字串:
public enum 杯型 {
小("小(8盎司)"),
中("中(12盎司)"),
大("大(16盎司)");
private final String 描述;
杯型(String 描述) {
this.描述 = 描述;
}
@Override
public String toString() {
return this.描述;
}
}
讓我們來分解一下這裡發生了什麼:
- 我們為我們的列舉添加了一個
描述
領域。 - 我們創建了一個構造函數,該函數將這個描述作為參數。
- 我們覆蓋了
toString()
方法,以便返回我們的自定義描述。
現在,讓我們使用我們增強的列舉:
public class 咖啡店 {
public static void main(String[] args) {
杯型 我的訂單 = 杯型.中;
System.out.println("我想要一杯" + 我的訂單 + "咖啡,請!");
}
}
這次,當你運行代碼時,它將輸出:"我想要一杯中(12盎司)咖啡,請!"
這不很棒嗎?我們已經自定義了我們的列舉值如何作為字串表示!
使用列舉字串
現在我們知道如何為我們的列舉創建有自定義的字串表示,讓我們來探索一些你可能會對列舉字串進行的常見操作。
將列舉轉換為字串
我們已經看到了如何使用 toString()
方法將列舉轉換為字串。但還有另一種方法可以獲取列舉常量的名稱作為字串:
杯型 尺寸 = 杯型.大;
String 尺寸名稱 = 尺寸.name();
System.out.println("列舉的名稱是:" + 尺寸名稱);
這將輸出:"列舉的名稱是:大"
將字串轉換為列舉
如果你有一個字串並想把它轉換回列舉呢?你可以使用 valueOf()
方法:
String 尺寸字串 = "小";
杯型 尺寸 = 杯型.valueOf(尺寸字串);
System.out.println("轉換的列舉是:" + 尺寸);
這將輸出:"轉換的列舉是:小(8盎司)"
迭代列舉值
有時,你可能會想要迭代列舉中的所有值。你可以使用 values()
方法來做到這一點:
System.out.println("可用的杯型:");
for (杯型 尺寸 : 杯型.values()) {
System.out.println("- " + 尺寸);
}
這將輸出:
可用的杯型:
- 小(8盎司)
- 中(12盎司)
- 大(16盎司)
實際示例:咖啡訂單系統
讓我們把我們學到的所有知識綜合在一起,創建一個更全面的示例。我們將創建一個簡單的咖啡訂單系統:
import java.util.Scanner;
public enum 咖啡類型 {
濃縮("一種強烈的咖啡,通過將熱水在壓力下通過細磨的咖啡豆來烹煮。"),
拿鐵("加熱牛奶和一層薄薄的牛奶泡沫的濃縮咖啡。"),
卡布奇諾("等量的濃縮咖啡、熱牛奶和牛奶泡沫。");
private final String 描述;
咖啡類型(String 描述) {
this.描述 = 描述;
}
@Override
public String toString() {
return name() + ": " + this.描述;
}
}
public class 咖啡店 {
public static void main(String[] args) {
Scanner 掃描器 = new Scanner(System.in);
System.out.println("歡迎光臨我們的咖啡店!");
System.out.println("以下是可用的咖啡類型:");
for (咖啡類型 類型 : 咖啡類型.values()) {
System.out.println("- " + 類型);
}
System.out.print("你想喝什麼類型的咖啡? ");
String 使用者選擇 = 掃描器.nextLine().toUpperCase();
try {
咖啡類型 選擇的咖啡 = 咖啡類型.valueOf(使用者選擇);
System.out.println("很好的選擇!你點了一杯" + 選擇的咖啡.name().toLowerCase() + "。");
} catch (IllegalArgumentException e) {
System.out.println("很抱歉,我们没有那種類型的咖啡。");
}
掃描器.close();
}
}
這個程序會做以下事情:
- 我們定義了一個
咖啡類型
列舉,對每種類型的咖啡都有描述。 - 在
main
方法中,我們向用戶顯示所有可用的咖啡類型。 - 我們要求用戶選擇一種咖啡類型。
- 我們嘗試將用戶的輸入轉換為
咖啡類型
列舉。 - 如果成功,我們確認他們的訂單。如果失敗,我們通知他們我们没有那種類型的咖啡。
結論
恭喜你!你剛剛深入探究了Java中的列舉字串的世界。我們已經涵蓋了列舉是什麼、如何自定義它們的字串表示以及如何以各種方式使用它們。請記住,列舉是Java中一個強大的工具,可以在處理固定常量集時使你的代碼更具可讀性且錯誤較少。
當你繼續你的Java之旅時,你會發現列舉有許多其他的用途。它們在switch語句、表示狀態機中的狀態或任何你有固定選項的地方特別有用。
繼續練習,保持好奇心,並且編程愉快!
Credits: Image by storyset