Java的基础知识里面,一直对枚举这个东西不理解。

SilentHunter460 2020-07-26 04:34:55
UP DOWN LEFT RIGHT是变量吗?是的话,数据类型是什么?
随便写个单词加逗号换行,看起来既不是基本数据类型,也不是某个类的对象。
Direction.UP 是一种标记吗?标记也得是某种基本数据类型,或者对象类型吧?


public enum Direction {
UP,
DOWN,
LEFT,
RIGHT;
}
...全文
2844 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
老狼童鞋 2020-07-29
  • 打赏
  • 举报
回复
枚举类型(enum),把不重复的数据存储为一个预定义的集合。 有时可以使用enum代替常用的字符串类型。 enum存储非常紧凑,会把列表值压缩到一个或两个字节。 enum在内部存储时,其实存的是整数。 尽量避免使用数字作为enum枚举的常量,因为容易混乱。 排序是按照内部存储的整数
小灰狼 2020-07-27
  • 打赏
  • 举报
回复
枚举是一种类型,它可以作为一个类的成员变量,或者一个方法、代码段的局部变量,这一点和一般的类,如String, ArrayList, Date 等类没本质区别 所不同的是,枚举的取值只能是枚举中规定的那几个,或者空值
小灰狼 2020-07-27
  • 打赏
  • 举报
回复
引用 3 楼 qybao 的回复:
枚举类型相当于类的静态实例 比如 class A { public static UP = new A(1, “UP”); public static DOWN = new A(2, “DOWN”); private int index; private String value; private A(int index, String value) { this.index = index; this.value = value; } } LZ可以自己查看Enum接口以及enum类的说明
+1 在 jdk1.5 之前,不支持枚举类型,基本上就是用这种方式来模拟枚举的
小小胖虎 2020-07-27
  • 打赏
  • 举报
回复
这是我练习的时候写的一个枚举,一般工作中也是这种样式的再写,枚举感觉就是主要用来校验一些类型,对应一些配置的感觉
public enum Sex {
    NAN(1,"男"),
    NV(2,"女"),
    WQD(0,"未确定");
    private final int sex;
    private final String name;
    Sex(int sex,String name){
        this.sex = sex;
        this.name = name;
    }
    public String getName(){
        return name;
    }
}
HochinChan 2020-07-27
  • 打赏
  • 举报
回复
引用 4 楼 qq_16774199的回复:
[quote=引用 2 楼 BioIT的回复:]枚举编译后也是.class文件,我觉得你可以把枚举名看成类名,把里面的看成常量。这样好理解一点,数据类型就是枚举名
但是这些常量既不能储存数字或字符,又不能储存对象。[/quote] 你应该只是看了个枚举的简单概述而已, 推荐去看java核心技术这本书, 讲得比较全 枚举类型可以存任何你想存的 public enum Direction {     UP("up"),     DOWN("down"),     LEFT("left"),     RIGHT("right"); private String a; private Direction(String a){ this.a=a; } public String getA(){ return a; } } UP("up")就相当于一个枚举类型的构造函数 这段代码通过简单修改就存了一个String对象了 然后可以通过 Direction[] directions = Direction.values() 来获取包含UP,DOWN,LEFT,RIGHT这四个实例的数组 再通过directions[0].getA()就能获取到UP这个实际中的String对象
HochinChan 2020-07-27
  • 打赏
  • 举报
回复
引用 4 楼 qq_16774199的回复:
[quote=引用 2 楼 BioIT的回复:]枚举编译后也是.class文件,我觉得你可以把枚举名看成类名,把里面的看成常量。这样好理解一点,数据类型就是枚举名
但是这些常量既不能储存数字或字符,又不能储存对象。[/quote] 你应该只是看了个枚举的简单概述而已, 推荐去看java核心技术这本书, 讲得比较全 枚举类型可以存任何你想存的 public enum Direction {     UP("up"),     DOWN("down"),     LEFT("left"),     RIGHT("right"); private String a; private Direction(String a){ this.a=a; } public String getA(){ return a; } } UP("up")就相当于一个枚举类型的构造函数 这段代码通过简单修改就存了一个String对象了 然后可以通过 Direction[] directions = Direction.values() 来获取包含UP,DOWN,LEFT,RIGHT这四个实例的数组 再通过directions[0].getA()就能获取到UP这个实际中的String对象
鸡窝里的毛 2020-07-26
  • 打赏
  • 举报
回复
枚举就是静态常量表达的一个变种,使用了特殊的语法来构建常量而已。只不过,枚举的表达效果更好,描述的内容也更加丰富。
默- 2020-07-26
  • 打赏
  • 举报
回复
哈哈😄!我想说了很多,。物价涨得通红?我们要努力
qybao 2020-07-26
  • 打赏
  • 举报
回复
参考3L,枚举也是有构造函数的,不要说村数字或字符,存对象都不足为奇,自己谷歌百度一下枚举的构造方法多学习学习吧
SilentHunter460 2020-07-26
  • 打赏
  • 举报
回复
引用 2 楼 BioIT的回复:
枚举编译后也是.class文件,我觉得你可以把枚举名看成类名,把里面的看成常量。这样好理解一点,数据类型就是枚举名
但是这些常量既不能储存数字或字符,又不能储存对象。
qybao 2020-07-26
  • 打赏
  • 举报
回复
枚举类型相当于类的静态实例 比如 class A { public static UP = new A(1, “UP”); public static DOWN = new A(2, “DOWN”); private int index; private String value; private A(int index, String value) { this.index = index; this.value = value; } } LZ可以自己查看Enum接口以及enum类的说明
bioittang 2020-07-26
  • 打赏
  • 举报
回复
枚举编译后也是.class文件,我觉得你可以把枚举名看成类名,把里面的看成常量。这样好理解一点,数据类型就是枚举名
亦夜 2020-07-26
  • 打赏
  • 举报
回复
枚举的成员相当于枚举类的对象实例,建议看一下这篇文章 https://blog.csdn.net/qq_35385687/article/details/90147104

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧