猿问

【Java】关于枚举类型遍历的问题

最近在学习Java,遇到了枚举类型(enum),遇到了一些问题。根据网上的一些大神文章,基本了解枚举,但是还是有些问题没有解决:

  • 枚举类型的初始化是什么样的,或者说它能像其他类一样初始化吗?

    如:Color color = ........;//Color为一个枚举类型,可以用这样类似的方式初始化吗?

  • 关于遍历

    for(Color color :Color.values()){.......}
    //本人已经知道上述的例子中,括号中的句子实现的是返回一个数组的功能,但是不理解这个“:”号是什么意思,为什么要声明一个枚举类型变量?

慕莱坞森
浏览 490回答 1
1回答

翻过高山走不出你

第一个问题: 首先要明确通常是用枚举类型来描述一组常量。 枚举类型是不可以实例化的。问题中描述的 Color color = ........; 初始化方式显然是不可以的。而枚举初始化则经常讨论的是枚举内部静态成员的初始化。 第二个问题: 所谓的“:”,其实只是Java增强for循环一个语法糖。 public enum Color { RED(0), BLACK(1); private int value; Color(int value) { this.value = value; } public static void main(String[] args) { for (Color color : Color.values()) { System.out.println(color.value); } } } 编译之后的.Class文件如下: public enum Color { RED(0), BLACK(1); private int value; private Color(int var3) { this.value = var3; } public static void main(String[] var0) { Color[] var1 = values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { Color var4 = var1[var3]; System.out.println(var4.value); } } } 从编译后的代码中可以看出,“:”形式的循环,本质上和一般循环或者遍历没有区别。
随时随地看视频慕课网APP

相关分类

Java
我要回答