Java Enum 枚举类型

来源:互联网 发布:mac地址由什么组成 编辑:程序博客网 时间:2024/05/21 07:29
从官网上看到的例子,在代码中加以注释,方便学习 

http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html


package pan.java.EnumDemo; //enum 等价与class文件 public enum Day { //枚举值的声明必须在 fields methosd 之前 SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;//可以定义fieldspublic int a=2;//可以定义 methodspublic void show(){    System.out.println(a);}//enum 的构造器必须是  package-private(什么都不写就是package-private) or private access  Day(){}}package pan.java.EnumDemo;public class EnumTest { Day day;public EnumTest(Day day) {    this.day = day;}public void tellItLikeItIs() {    switch (day) {        case MONDAY:            System.out.println("Mondays are bad.");            break;        case FRIDAY:            System.out.println("Fridays are better.");            break;        case SATURDAY: case SUNDAY:            System.out.println("Weekends are best.");            break;        default:            System.out.println("Midweek days are so-so.");            break;    }}public static void main(String[] args) {    EnumTest firstDay = new EnumTest(Day.MONDAY);    firstDay.tellItLikeItIs();    EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);    thirdDay.tellItLikeItIs();    EnumTest fifthDay = new EnumTest(Day.FRIDAY);    fifthDay.tellItLikeItIs();    EnumTest sixthDay = new EnumTest(Day.SATURDAY);    sixthDay.tellItLikeItIs();    EnumTest seventhDay = new EnumTest(Day.SUNDAY);    seventhDay.tellItLikeItIs();    //特殊方法 values() 返回enum数组    for(Day d:Day.values()){        System.out.println("Day.values() : "+d.toString());    }    //不能实例化 enum 类 那还要构造函数干嘛?    //Day dd=new Day();    //特殊方法 values() 返回enum数组    Day[] day =Day.values();    for(int x=0;x<=day.length-1;x++){        System.out.println("Day.values() : "+day[x]);    }    //所有的enum 都隐式的继承了 java.lang.Enum}}package pan.java.EnumDemo;public enum Planet { //这样使用 enum 的构造函数 MERCURY (3.303e+23, 2.4397e6), VENUS (4.869e+24, 6.0518e6), EARTH (5.976e+24, 6.37814e6), MARS (6.421e+23, 3.3972e6), JUPITER (1.9e+27, 7.1492e7), SATURN (5.688e+26, 6.0268e7), URANUS (8.686e+25, 2.5559e7), NEPTUNE (1.024e+26, 2.4746e7);private final double mass;   // in kilogramsprivate final double radius; // in metersPlanet(double mass, double radius) {    this.mass = mass;    this.radius = radius;}private double mass() { return mass; }private double radius() { return radius; }// universal gravitational constant  (m3 kg-1 s-2)public static final double G = 6.67300E-11;double surfaceGravity() {    return G * mass / (radius * radius);}double surfaceWeight(double otherMass) {    return otherMass * surfaceGravity();}public static void main(String[] args) {    if (args.length != 1) {        System.err.println("Usage: java Planet <earth_weight>");        System.exit(-1);    }    double earthWeight = Double.parseDouble(args[0]);    double mass = earthWeight/EARTH.surfaceGravity();    for (Planet p : Planet.values())       System.out.printf("Your weight on %s is %f%n",                         p, p.surfaceWeight(mass));}}


0 0
原创粉丝点击