黑马程序员—Java基础加强—(枚举)

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

1.枚举

枚举(Enum)是Java1.5新加入的一个数据类型,枚举就相当于一个类,与其他数据类型不同的是枚举可以自己定义常量.提高了安全性

jdk1.6 switch语句也支持枚举类型了

2.枚举的常用方法:

static
<T extends Enum<T>>
T
valueOf(Class<T> enumType,String name)
          返回带指定名称的指定枚举类型的枚举常量。
 Stringname()
          返回此枚举常量的名称,在其枚举声明中对其进行声明。
 intordinal()
          返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。



3.枚举的特点:

1: 枚举列表必须写在最前面,否则编译出错
2 :构造方法必须是私有的,并且可以在枚举列表中直接调用
3: 枚举中的字段都是 public static final 特性 , 是枚举类本身的类型 . 每个字段之间有一个 "," 号隔开 , 最后一个字段后面的 "," 可以省略掉 , 整个字段的最后要有一
      
";" 结束符号

4.枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象

5. 枚举中可以含有抽象方法,因为枚举本身就是抽象类.一旦枚举中含有抽象方法,那么在字段创建内部类的时候一定要实现该抽象方法.
 枚举重也可以定义实现方法.比如枚举都要复写父类的toString()方法.

6.枚举是final的抽象类,所以枚举不能被继承,字段也不能再赋新值

4.枚举的好处:

先看以下需求:定义一个类表示星期,有打印下一天,和当天等功能,用普通方法实现如下:

class ClassDemo {  
 	    public static void main(String[] args) {  
 	        WeekDay today = WeekDay.SAT;  
 	        System.out.println(today+"的下一天是"+today.nextDay());  
 	    }  
 	}  
 	class WeekDay {  
 	    //构造函数  
 	    private WeekDay(){}  
 	  
 	    //创建星期的七个对象  
 	    public final static WeekDay SUN = new WeekDay();  
 	    public final static WeekDay MON = new WeekDay();  
 	    public final static WeekDay TUE = new WeekDay();  
 	    public final static WeekDay WED = new WeekDay();  
 	    public final static WeekDay THU = new WeekDay();  
 	    public final static WeekDay FN  = new WeekDay();  
 	    public final static WeekDay SAT = new WeekDay();  
 	     
 	    //下一天的方法  
 	    public WeekDay nextDay() {                                 
 	        if(this==SUN)  
 	            return MON;  
 	        else if(this==MON)   
 	            return TUE;  
 	        else if(this==TUE)   
 	            return WED;  
 	        else if(this==WED)   
 	            return THU;  
 	        else if(this==THU)  
 	            return FN;  
 	        else if(this==FN)  
 	            return SAT;  
 	        else   
 	            return SUN;  
 	    }  
 	  
 	    //重写toString()方法  
 	    public String toString(){                               
 	        if (this == SUN)   
 	            return "星期日";  
 	        else if(this==MON)   
 	            return "星期一";  
 	        else if(this==TUE)  
 	            return "星期二";   
 	        else if(this==WED)  
 	            return "星期三";  
 	        else if(this==THU)  
 	            return "星期四";  
 	        else if(this==FN)  
 	            return "星期五";  
 	        else  
 	            return "星期六";  
 	    }  
 	}

以上需求若用枚举完成则可以改为:

public class EnumDemo{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(EnumTest.WeekDay.MON.nextDay());
	}
	public enum  WeekDay {  
 	     
 	  
 	    //创建星期的七个对象  
 	     SUN,   MON,   TUE,   WED,   THU,   FN,   SAT ;  
 	     
 	    //下一天的方法  
 	  
  	    
 	     public WeekDay nextDay() {                                 
 	        if(this==SUN)  
 	            return MON;  
 	        else if(this==MON)   
 	            return TUE;  
 	        else if(this==TUE)   
 	            return WED;  
 	        else if(this==WED)   
 	            return THU;  
 	        else if(this==THU)  
 	            return FN;  
 	        else if(this==FN)  
 	            return SAT;  
 	        else   
 	            return SUN;  
 	    }  
 	  
 	    //重写toString()方法  
 	    public String toString(){                               
 	        if (this == SUN)   
 	            return "星期日";  
 	        else if(this==MON)   
 	            return "星期一";  
 	        else if(this==TUE)  
 	            return "星期二";   
 	        else if(this==WED)  
 	            return "星期三";  
 	        else if(this==THU)  
 	            return "星期四";  
 	        else if(this==FN)  
 	            return "星期五";  
 	        else  
 	            return "星期六";  
 	    } 
	}

}


5:实现带有构造方法和抽象方法的枚举:


public class EnumTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(EnumTest.WeekDay.MON.nextDay().day);
		System.out.println(EnumTest.WeekDay.valueOf("SAT").day);
		
	}
	 
 	      
 	      
 	  
 	    //创建枚举  
 	    public enum WeekDay {  
 	    	SUN{
				@Override
				public WeekDay nextDay() {
					// TODO Auto-generated method stub
					return MON;
				}

				@Override
				public String toString() {
					// TODO Auto-generated method stub
					return "星期天";
				}
			}, 	    	
 	    	MON{
				@Override
				public WeekDay nextDay() {
					// TODO Auto-generated method stub
					return TUE;
				}

				@Override
				public String toString() {
					// TODO Auto-generated method stub
					return "星期一";
				}
			}, 	    	
			TUE{
				@Override
				public WeekDay nextDay() {
					// TODO Auto-generated method stub
					return WED;
				}

				@Override
				public String toString() {
					// TODO Auto-generated method stub
					return "星期二";
				}
			}, 	    	
			WED{
				@Override
				public WeekDay nextDay() {
					// TODO Auto-generated method stub
					return THU;
				}

				@Override
				public String toString() {
					// TODO Auto-generated method stub
					return "星期三";
				}
			},	    	
			THU {
				@Override
				public WeekDay nextDay() {
					// TODO Auto-generated method stub
					return FN;
				}

				@Override
				public String toString() {
					// TODO Auto-generated method stub
					return "星期四";
				}
			},
			FN{
				@Override
				public WeekDay nextDay() {
					// TODO Auto-generated method stub
					return SAT;
				}

				@Override
				public String toString() {
					// TODO Auto-generated method stub
					return "星期五";
				}
			},			
			SAT(6){//使用带参数的构造函数WeekDay(int day)实例化
				@Override
				public WeekDay nextDay() {
					// TODO Auto-generated method stub
					return SUN;
				}

				@Override
				public String toString() {
					// TODO Auto-generated method stub
					return "星期六";
				}
			}; 	    	
			public int day;
 	    	
			private WeekDay(){};
 	    	private WeekDay(int day){this.day=day;};
 	        public abstract WeekDay nextDay();//创建抽象方法nextDay(),返回的对象是类的本身WeekDay。  
 	        public abstract String toString();//创建抽象方法toString(),返回的对象是String
 	    }  
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值