Java - 枚举字符串
你好,有抱负的Java程序员们!今天,我们将深入探讨Java中的枚举字符串的迷人世界。如果你完全是一个编程新手,请不要担心——我会一步一步地引导你,就像我在过去多年的教学中对无数学生所做的那样。所以,让我们一起踏上这个激动人心的旅程吧!
枚举是什么?
在我们深入研究枚举字符串之前,让我们先从基础开始。枚举,简称“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.描述;
}
}
让我们分解一下这里发生了什么:
- 我们在枚举中添加了一个
描述
字段。 - 我们创建了一个接收此描述作为参数的构造函数。
- 我们重写了
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();
}
}
这个程序做了以下几件事:
- 我们定义了一个
咖啡类型
枚举,包含每种咖啡的描述。 - 在
main
方法中,我们向用户显示所有可用的咖啡类型。 - 我们询问用户选择一种咖啡类型。
- 我们尝试将用户的输入转换为
咖啡类型
枚举。 - 如果成功,我们确认他们的订单。如果不成功,我们通知他们我们没有那种类型的咖啡。
结论
恭喜你!你已经深入了解了Java中的枚举字符串世界。我们介绍了枚举是什么,如何自定义它们的字符串表示,以及如何以各种方式使用它们。请记住,枚举是Java中的一种强大工具,可以在处理一组固定常量时使代码更易读、更少出错。
在你继续Java之旅的过程中,你会发现枚举有许多更多的用途。它们在switch语句、表示状态机中的状态或任何有固定选项集的地方特别有用。
继续练习,保持好奇心,祝编程愉快!
Credits: Image by storyset