黑马程序员_基础加强第一天——JDK1.5新特性

静态导入:
  • 例:import static 类.*;
  • 可以导入该类中所有的静态方法。

可变参数:
  • 问题:一个方法接受的参数个数不固定
  • 特点:
    • 只能出现在参数列表的最后
    • ...位于变量类型和变量名之间
    • 调用含有可变参数的方法时,编译器为该可变参数隐含创建一个数组,方法体中以数组的形式访问可变参数
  • 例: public static int add( int... args)

java5的增强for循环:
  • 例:for(int arg:args)

基本数据类型的自动装箱与拆箱:
  • Interger intObj = 3;【自动装箱】
  • intObj + 12;【自动拆箱】
  • 当数字在-128~127(一个字节)之间时使用享元设计模式,不用搞出很多个对象

枚举:
  • 为什么要有枚举类?
    • 枚举就是要让某个类型的变量的取值为若干个固定值中的一个,否则编译器报错
    • 枚举可以让编译器编译时就控制源程序中的非法值
  • 用普通类如何实现枚举功能?定义一个WeekDay来模拟枚举功能
    • 私有的构造方法
    • 每个元素分别用一个公有的静态成员变量表示
    • 可以有若干公有方法或抽象方法。例如WeekDay中将nextDay()方法定义成抽象的,大量if-else语句就转化成一个个独立的子类(利用匿名内部类)
    • 模拟枚举功能的WeekDay类:
      public abstract class WeekDay {
      	private WeekDay(){}
      	//通过匿名内部类新建WeekDay子类对象:
      	public static final WeekDay SUN = new WeekDay(){
      
      		@Override
      		public WeekDay nextDay() {
      			// TODO Auto-generated method stub
      			return MON;
      		}
      		
      	};
      	public static final WeekDay MON = new WeekDay(){
      
      		@Override
      		public WeekDay nextDay() {
      			// TODO Auto-generated method stub
      			return SUN;
      		}
      		
      	};
      	
      	public String toString(){
      		return (this==SUN)?"SUN":"MON";
      	}
      	
      	public abstract WeekDay nextDay();  //抽象方法
      }
      
      测试类:
      public class EnumTest {
      
      	public static void main(String[] args) {
      		// TODO Auto-generated method stub
      		WeekDay weekDay = WeekDay.MON;
      		System.out.println(weekDay.nextDay());
      	}
      
      }
      
      
  • 枚举的基本应用:
    • 举例:定义一个WeekDay的枚举
    • 扩展:枚举类的values, valueOf, name, toString, ordinal等方法
    • public class EnumTest {
      
      	public static void main(String[] args) {
      		// TODO Auto-generated method stub
      		//测试WeekDay枚举以及其各种方法:
      		WeekDay weekDay = WeekDay.SUN;
      		System.out.println(weekDay);
      		System.out.println(weekDay.name());
      		System.out.println(weekDay.ordinal());
      		//静态方法:
      		System.out.println(WeekDay.valueOf("SUN"));
      		System.out.println(WeekDay.values());
      	}
      	
      	//枚举
      	public enum WeekDay{
      		SUN,MON,TUE,WED,THU,FRI,SAT;
      	}
      
      }
  • 枚举相当于一个类,可以定义构造方法、成员变量、普通方法和抽象方法
    public class EnumTest {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		TrafficLight trafficLight = TrafficLight.Yellow;
    		System.out.println(trafficLight.nextLight());
    	}
    	
    
    	public enum TrafficLight{
    		Red(30){
    			public TrafficLight nextLight(){
    				return Green;
    			}
    		}, 
    		Yellow(5){
    			public TrafficLight nextLight(){
    				return Red;
    			}
    		}, 
    		Green(35){
    			public TrafficLight nextLight(){
    				return Yellow;
    			}
    		};
    		
    		//成员变量
    		private int time;
    		//带参数的构造方法
    		private TrafficLight(int time){
    			this.time = time;
    		}
    		//抽象方法
    		public abstract TrafficLight nextLight();
    	}
    
    }
    

  • 枚举的元素必须位于枚举体中最开始的部分,枚举元素成员列表后要有分号与其他成员分隔
  • 枚举只有一个元素时,可以作为一种单例实现方式
    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值