Java - 列舉字串

你好,有抱負的Java程序設計師!今天,我們將深入探討Java中的列舉字串(Enum Strings)的迷人世界。如果你完全是编程新手,也別擔心——我會一步步引導你,就像我過去幾年教學中為無數學生所做的那樣。那麼,讓我們一起踏上這個激動人心的旅程吧!

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.描述;
}
}

讓我們來分解一下這裡發生了什麼:

  1. 我們為我們的列舉添加了一個 描述 領域。
  2. 我們創建了一個構造函數,該函數將這個描述作為參數。
  3. 我們覆蓋了 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();
}
}

這個程序會做以下事情:

  1. 我們定義了一個 咖啡類型 列舉,對每種類型的咖啡都有描述。
  2. main 方法中,我們向用戶顯示所有可用的咖啡類型。
  3. 我們要求用戶選擇一種咖啡類型。
  4. 我們嘗試將用戶的輸入轉換為 咖啡類型 列舉。
  5. 如果成功,我們確認他們的訂單。如果失敗,我們通知他們我们没有那種類型的咖啡。

結論

恭喜你!你剛剛深入探究了Java中的列舉字串的世界。我們已經涵蓋了列舉是什麼、如何自定義它們的字串表示以及如何以各種方式使用它們。請記住,列舉是Java中一個強大的工具,可以在處理固定常量集時使你的代碼更具可讀性且錯誤較少。

當你繼續你的Java之旅時,你會發現列舉有許多其他的用途。它們在switch語句、表示狀態機中的狀態或任何你有固定選項的地方特別有用。

繼續練習,保持好奇心,並且編程愉快!

Credits: Image by storyset