黑马程序员---枚举

----------------------android培训java培训、期待与您交流! --------------------

枚举

1、枚举是什么?   

       枚举的定义:枚举也就是一个类,就是让某一个引用类型的变量的取值在一些固定的取值范围之内,它是一个常量。他的每一个元素就相当于他的一个实例对象。但是枚

       举他自身是不能创建对象的,因为他的构造函数式

       例如:我们常说的春、夏、秋、冬就是固定不变的,这时候我们就需要用一些常量来表示,我们就要用到了枚举。

2、枚举的作用??

          可以让编译器在编译的时候就可以控制程序不能填写非法值,一般的定义变量的方式无法实现这个作用。

3、枚举是怎么创建的?

     3.1用一般类是怎么实现枚举的?

    public class ColorTest
      {
            public static void main(String[] args)
           {
                     Color color1=Color.RED;
                     Color color2=Color.GREEN;
                     Color color3=Color.BLUE;
                     System.out.println(color1.getName());
                     System.out.println(color2.getName());
                     System.out.println(color3.getName());
          }

      }

       public class Color 
       {
 
              private String name;
              private Color(String name)
              {
                         this.setName(name);
              }
           //在本类中穿件实例对象
                 public static final Color RED=new Color("hong");
                 public static final Color GREEN=new Color("lu");
                 public static final Color BLUE=new Color("lan");
                 public String getName()// 获取当前的颜色名称
                 {
                            return name;
                 }
                 public void setName(String name) //设置当前颜色的名称
                 {
                            this.name = name;
                 }
         }



          以上程序将Color 类中的构造方法私有了,之后在类中准备了若干个实例化对象,以后要取得Color 类的实例则     只能用RED,GREEN,BLUE三个对象,这样就有效的控制了对象的取得范围。


    3.2在java中枚举的实现方式

  public enum WeekDay1//java在enum中低层自动锁调用toString()等方法;
       {

                    //带有构造函数的枚举  构造函数应该被私有
          SUN,MON,TUE,SAT;
          private WeekDay1(){System.out.println(1);};
          private WeekDay1(int a){System.out.println(2);}
       }


     注意:在定义枚举元素的时候,必须定义在他的首行,中间用逗号隔开,最后用分号结束
     思考:当我们的枚举元素只有一个的时候,可以把它弄成是单例设计模式???
      3.3 取得枚举的信息
     ordinal 则会从 0 开始依次进行编号,之后可以使用Enum 提供的name() 和ordinal() 方法获取名称和编号。
     3.4 通过构造方法为属性赋值:
     每个枚举类中都有其指定好的若干对象,当然每一个枚举类对象中也可以包含多个属性。而这些属性也可以通过    构造方法为其赋值。
      通过构造方法为枚举元素赋值:

  class ConstructorEnum
 {
  publci static void main(String[] args)
  {
   for(Color c:Color.values())
   {
    System.out.println(c.ordinal()+":::"+c.name()+c.getName());
   }
  }
 }
 //在这个例子中,c.ordinal()返回的就是枚举时候的顺序,c.name()返回的枚举元素的名称,c.getName()         //返回的是我们给他所穿进去的值
 enum Color
 {
  RED,GREEN,BIUE;
  private String name;
  private Color(String name){this.setName(name);}
  public String getName(){return name;}
  public void setName(){this.name=name;}
 }


 

            知识小扩展:枚举本身已经implements了Comparable接口,他自身是具备比较性的。所以我们将其传入TreeSet      集合的时候他已经给其排序了

 

 

---------------------- android培训java培训 、期待与您交流! --------------------

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值