java 枚举(enum)学习

之前没有用过枚举,不懂。今天找了些资料学习了,现在总结如下:(希望高手看到后批评指教)

枚举的作用:

1、限定某一类型的取值范围。

2.不再写public static final...(如果取值范围太广,就太麻烦了),但最终enum还是要转化成class类型,还是会加public
static final...

一段代码说明为什么java要有enum类型:


package good.good.study;

public class EnumStudy2 {

public static void main(String[] args) {
/**
      * Person1(...)和 Person2(...)不合理 ;Person3(...)有点麻烦
      *
     */
new Person1("name","male");

new Person1("name2", "name2");//字符串类型的数据可以随便填,不会报错,但是不合理!

new Person2("name", true);//true 代表什么啊?不明确

new Person3("name",Sex.MALE);//public static final

new Person4("name",Sex_enum.MALE);//enum
}
}
class Person1{

private String name;
private String sex;

public Person1(String name,String sex){
this.name = name;
this.sex = sex;
}

}
class Person2{

private String name ;
private boolean sex;

public Person2(String name,boolean sex){
this.name = name;
this.sex = sex;
}
}
class Sex{

private String sex;

public static final Sex MALE = new Sex("男");
public static final Sex FEMALE = new Sex("女");

private Sex(String sex){
this.sex = sex;
}
}
class Person3{

private String name;
private Sex sex;

public Person3(String name,Sex sex){
this.name = name;
this.sex = sex;
}
}
class Person4{

private String name;
private Sex_enum sex;

public Person4(String name,Sex_enum sex){
this.name = name;
this.sex = sex;
}
}
enum Sex_enum{
MALE("男"),FEMALE("女");

private Sex_enum(String sex){

}
}

原因就是上面的1和2

再来一段代码说明enum的基本用法:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

package
good.good.study;

interface
Print{

    String getColor();

}

enum Color implements
Print{//枚举实现接口

    

    RED(1,"红色"){

        @Override

        public
String getColor() {

            return
"红色";

        }

        

    },

    YELLOW(2,"黄色"){

        @Override

        public
String getColor() {

            return
"黄色";

        }

        

    },

    GREEN(3,"绿色"){

        @Override

        public
String getColor() {

            return
"绿色";

        }

        

    };

    /**

     * 普通属性

     */

    private
int index;

    /**

     * 普通属性

     */

    private
String color;

    /**

     * 构造方法(*必须是private的)

     * @param index

     * @param color

     */

    private
Color(int
index,String color){

        this.index = index;

        this.color = color;

    }

    /**

     * set、get 方法

     *

     */

    public
int getIndex() {

        return
index;

    }

    public
void setIndex(int
index) {

        this.index = index;

    }

    public
String getColor() {

        return
color;

    }

    public
void setColor(String color) {

        this.color = color;

    }

    /**

     * 普通方法

     */

    public
void commonMethod(){

        System.out.println("枚举类型中的普通方法!");

    }

}

public
class EnumStudy{

    

    public
static void main(String[] args) {

        

        /**

         * 枚举中的主要方法 :

         * int compareTo(E o) 比较顺序

         * boolean equals(Object o) 比较是否相等

         * String name() 返回此枚举的名称

         * int ordinal() 返回此枚举常量的序号

         */

        System.out.println(Color.RED.compareTo(Color.YELLOW));//-1

        System.out.println(Color.RED.compareTo(Color.GREEN));//-2

        System.out.println(Color.YELLOW.compareTo(Color.GREEN));//-1

        

        System.out.println(Color.RED.equals(Color.RED));//true

        

        System.out.println(Color.RED.name());//RED

        System.out.println(Color.RED.ordinal());//0

        

        /**

         * 调用普通方法

         */

        Color red = Color.RED;

        red.commonMethod();//枚举类型中的普通方法!

        /**

         * 调用接口中的方法

         */

        System.out.println(red.getColor());//红色

        

        /**

         * 枚举还可以用做switch选择

         */

        switch
(red) {

        case
RED:

            System.out.println("RED");

            break;

        case
YELLOW:

            System.out.println("YELLOW");

            break;

        case
GREEN:

            System.out.println("YELLOW");

            break;

        default:

            break;

        }

    }

}

  

java 枚举(enum)学习,布布扣,bubuko.com

时间: 2024-08-02 02:43:41

java 枚举(enum)学习的相关文章

java枚举类型学习

用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举.参考:java编程思想. 1.简单创建 枚举就是一个固定的集合,内容是声明的类. package com.test.java.tenum; /** * 一个简单的enum实例 * Created by Administrator on 2016/3/30. */ public enum SimpleEnumUse { NOT,MILD,MEDIUM,HOT,FLAMING } class TestSE{ public st

Java——枚举enum

枚举我认为:枚举简单的说也可以一种数据类型,只不过是这种数据类型只包含我们自定义的数据,它是一组有共同特性的数据的集合.举个简单例子,颜色也可以定义成枚举类型,它可以包含你自定义的任何颜色,当需要的时候,只需要通过枚举调用即可,另外比如季节(春夏秋冬).星期(星期一到星期日).衣服的号码(S.M.L.XL)等等这些具有共同特性的数据都可以定义枚举.下面是个例子: public class EnumTest { public static void main(String[] args) { Sc

Java 枚举(enum) 详解7种常见的用法

用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. Java代码 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. Java代码 enum Signal { GREEN, YE

枚举enum学习小记

参考文献: [1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社 [2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社   1.枚举enum的用途浅例       写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等.       更常见的,打开一个文件可能有三种状态:input, output和append.

Java枚举enum以及应用:枚举实现单例模式

枚举作为一个常规的语言概念,一直到Java5才诞生不得不说有点奇怪,以至于到现在为止很多程序员仍然更喜欢用static final的形式去命名常量而不使用,一般情况下,Java程序员用这种方式去实现枚举: class EnumByClass{ public static final int RED=0; public static final int GREEN=1; public static final int BLUE=2; } 这种方式实现的枚举也叫int枚举模式,尽管很常用,但是由in

Java枚举再学习

枚举是JDK 5以后引入的,被称作新特性,虽然JDK 5推出已经N年了,不过鉴于这个版本在Java里程碑上的重要性,就姑且继续称作新特性吧. 枚举的定义: 1 public enum Lamp { 2 RED,GREEN,YELLOW; 3 } 枚举使用关键字enum定义,enum是enumeration的缩写.枚举的基本作用是将所需要的可选项罗列出来,以控制程序只能获得被罗列出的选项,可以当做是一种规范.而枚举元素通常采用全大写,因为枚举元素属于固定项,和常量类似. 枚举的每一个元素都代表这个

java枚举enum

http://www.cnblogs.com/wenruo/p/5349614.html java的枚举通过关键字enum实现.可以理解为一个类,不过这个类由编译器自动加了一些方法. static values()方法用来按照enum常量的声明顺序 产生由这些常量值构成的数组 ordinal 表示某个特定enum常量的声明顺序 toString() 以显示每个enum实例的名字 可以在switch语句中使用,但是注意case处直接写常量,不加enum的名字. 1 enum Spiciness {

Java枚举enum使用及相关的操作

在Java1.5之后,引入了枚举新的特性,在之前,java有两种定义新类型的方式:类和接口.但是在特殊情况下,满足不了我们的需求,比如我们定义一个Color类,它只能有Red,Blue,Green三种值,对于其他的值来说都是无效的.为引入枚举之前,我们一般使用其私有化其构造方法,然后在其内部实例化三个常量,然后再取值.这样不仅繁琐,而且带来了更多不安全的问题. package andy.enumtype.test; /** * @author Zhang,Tianyou * version:20

Java 枚举(enum) 常见用法

JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 用法一:常量. 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. public enum Color { RED, GREEN, BLANK, YELLOW } 简单使用public class B {     public st