黑马程序员-高新技术-枚举

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

Eclipse快捷键设置:
Preferences->General->Keys中设置!   内容助理context assist

基本数据的自动拆装箱:
Integer i1 = 137;//装箱(-128~127)
System.out.println(i1+98);//拆箱

享元设计模式 flyweight:
享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元


Integer i3 = Integer.valueOf(3);
Integer i4 = Integer.valueOf(3);
System.out.println(i3==i4);


jdk1.5新特性:枚举
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
如果枚举只有一个成员,就可以作为一个单例的实现方式。

注:枚举也是类,它没有构造方法。我们可以给他定义构造方法。枚举中的构造方法必须是private私有的,并且需要在元素列表的后面。

用普通类模拟枚举例子:
WeekDay.class

package com.itheima;

public abstract class WeekDay {
	private WeekDay(){}
	
	public final static WeekDay SUN = new WeekDay(){      //匿名内部类

		@Override
		public WeekDay nextDay() {                    //重写父类方法
			// TODO Auto-generated method stub
			return MON;
		}
		
	};
	public final static WeekDay MON = new WeekDay(){      //匿名内部类
		@Override
		public WeekDay nextDay() {
			// TODO Auto-generated method stub
			return SUN;
		}};
	
	public abstract WeekDay nextDay();   //采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。
/*	public WeekDay nextDay()
	{
		if(this == SUN){
			return MON;
		}
		else{ 
			return SUN;
		}
	}*/
	
	public String toString(){
		return this == SUN?"SUN":"MON";
	}

}
EnumTest.class

package com.itheima;

public class EnumTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay weekDay = WeekDay.MON;
		System.out.println(weekDay.nextDay());

	}

}


枚举的基本应用:

public class EnumTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay1 weekDay1= WeekDay1.FRI;
		System.out.println(weekDay1);
		System.out.println(weekDay1.name());
		System.out.println(weekDay1.ordinal());
		System.out.println(WeekDay1.valueOf("SUN").toString());
	}
	
	public enum WeekDay1{
		SUN,MON,TUE,SED,THI,FRI,SAT
	}

}


带有构造函数的枚举:

	public enum WeekDay{
		SUN(1),MON(),TUE,WED,THI,FRI,SAT;
		private WeekDay(){System.out.println("first");}
		private WeekDay(int day){System.out.println("Second");}
	}


最复杂的枚举:

	public enum TrafficLamp{  //先定义三个元素,在元素后面填上大括号表示三个元素使用枚举的子类来完成的。
		RED(30){
			public  TrafficLamp nextLamp(){		//子类必须完成父类的抽象方法,注:这里的方法不能再抽象了。将abstract去掉
				return GREEN;
			}
		},
		GREEN(45){
			public  TrafficLamp nextLamp(){
				return YELLOW;
			}
		},
		YELLOW(5){
			public  TrafficLamp nextLamp(){
				return RED;
			}
		};
		
		public abstract TrafficLamp nextLamp();//这个方法的返回值还是TrafficLamp
		
		//灯还需要有时间,所以需要成员变量
		private int time;
		private TrafficLamp(int time){this.time = time;}
	}

}




Open in Explorer是MyEclipse里的一个小功能。



---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值