Java - 枚举字符串

你好,有抱负的Java程序员们!今天,我们将深入探讨Java中的枚举字符串的迷人世界。如果你完全是一个编程新手,请不要担心——我会一步一步地引导你,就像我在过去多年的教学中对无数学生所做的那样。所以,让我们一起踏上这个激动人心的旅程吧!

Java - Enum Strings

枚举是什么?

在我们深入研究枚举字符串之前,让我们先从基础开始。枚举,简称“enumerations”,是Java中的一种特殊类型,代表一组固定的常量。可以将它们看作是在程序运行期间不会更改的预定义选项列表。

想象一下你正在为一个咖啡店创建一个程序。你可能有固定的杯子大小:小、中、大。这正是使用枚举的完美场景!

以下是定义此枚举的方法:

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 scanner = new Scanner(System.in);

System.out.println("欢迎光临我们的咖啡店!");
System.out.println("以下是我们的可用咖啡类型:");
for (咖啡类型 类型 : 咖啡类型.values()) {
System.out.println("- " + 类型);
}

System.out.print("你想喝什么类型的咖啡?");
String 用户选择 = scanner.nextLine().toUpperCase();

try {
咖啡类型 选择的咖啡 = 咖啡类型.valueOf(用户选择);
System.out.println("好选择!你点了一杯" + 选择的咖啡.name().toLowerCase() + "。");
} catch (IllegalArgumentException e) {
System.out.println("抱歉,我们没有那种类型的咖啡。");
}

scanner.close();
}
}

这个程序做了以下几件事:

  1. 我们定义了一个 咖啡类型 枚举,包含每种咖啡的描述。
  2. main 方法中,我们向用户显示所有可用的咖啡类型。
  3. 我们询问用户选择一种咖啡类型。
  4. 我们尝试将用户的输入转换为 咖啡类型 枚举。
  5. 如果成功,我们确认他们的订单。如果不成功,我们通知他们我们没有那种类型的咖啡。

结论

恭喜你!你已经深入了解了Java中的枚举字符串世界。我们介绍了枚举是什么,如何自定义它们的字符串表示,以及如何以各种方式使用它们。请记住,枚举是Java中的一种强大工具,可以在处理一组固定常量时使代码更易读、更少出错。

在你继续Java之旅的过程中,你会发现枚举有许多更多的用途。它们在switch语句、表示状态机中的状态或任何有固定选项集的地方特别有用。

继续练习,保持好奇心,祝编程愉快!

Credits: Image by storyset