今天在Java课上学习了有关于枚举类型的知识。老师给出了这个例子供我们初步了解。
public class EnumTest {
public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
System.out.println(st);
System.out.println(s.getClass().isPrimitive());
Size u=Size.valueOf("SMALL");
System.out.println(su);
for(Size value:Size.values()){
System.out.println(value);
}
}
}
enum Size{SMALL,MEDIUM,LARGE};
关于这个程序,运行后的结果是:
false
false
true
SMALL
MEDIUM
LARGE
对结果的分析:
第一次输出的false来自System.out.println(st);在这之前,Size s=Size.SMALL;Size t=Size.LARGE;将s初始为枚举类型的第一个常量SMALL,t初始为第二个常量LARGE。初始化的常量本不同。
第二次输出的false来自Size u=Size.valueOf("SMALL");这是检查s是否为原始数据类型,而输出的false证明了由于枚举并不是原始数据类型。
第三次输出的true来自System.out.println(su);检查s和u是否引用同一个对象,由于它们都是Size.SMALL的实例,结果输出为true。
for(Size value:Size.values()){...}
使用了增强for循环,遍历Size枚举中的所有值,并打印出来。values()方法返回一个数组,包含枚举中定义的所有常量。
由这次的程序可以见得:
枚举类型在Java中是一个特殊的类,用于定义一组固定的常量;枚举类型可以包含方法、构造函数和字段,这使得它们可以包含比简单常量更复杂的行为和状态;枚举类型中的每个常量实例在内存中是唯一的,这意味着相同的枚举常量在不同的地方使用时,它们实际上是引用同一个对象;枚举类型不是原始数据类型,它们是引用类型,这意味着它们可以使用操作符来检查引用是否相等,但不能用来比较原始值。