黑马程序员_java高新技术_JDK1.5新特性

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

可变参数
在程序编写过程中,一个方法可能会接收若干个参数,参数个数是不确定的,通常会使用重载的方法,定义出多个方法名相同,参数列表不同,实现相同的功能,JDK 1.5 提供了方法的可变参数特性,在参数个数不确定时,通过可变参数方法实现函数功能,避免了因重载列出大量的相同方法。
可变参数的特点
只能出现在参数列表的最后
。。。位于变量类型和变量名之间,前后有无空格都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
可变参数的使用示例
public class VarableParameter
{
	public static void main(String[] args)
	{
		System.out.println(add(2,3,5));
		System.out.println(add(2,1,3,5));//调用可变参数方法,传入不同个数int型参数
		
	}
	public static int add(int x,int... args)//可变参数位于参数列表的最后面
	{
		int sum=x;
		for(int i=0;i<args.length;i++)
		{
			sum+=args[i];
			
		}
		return sum;
	}

}
for循环增强
语法:for(type 变量名:集合变量名){...}
注意事项:
迭代变量必须在()中定义
集合变量可以是数组或者实现了Iterable接口的集合类

基本数据类型的自动拆箱与装箱
自动装箱:
Integer i1=12;//将基本数据类型int型的12自动装箱成Integer 对象
自动拆箱:
Integer i2+13;// 将Integer 类型的i2 对象 自动拆箱成int 型 与13相加,相加后的结果再自动装箱成Integer对象
享元模式 flyweigth
当对象很小,数值不变使用频率又很高,就创建一个对象 
当有很多很小的对象,他们有很多相同的属性那么就将它变成一个对象,将不同的部分变成外部属性作为方法的参数传入
Integer i3=15;
Integer i4=15;
i3==i4 结果为true 
Integer i5=129
Integer i6=129
i5==i6 结果为false 
i7=Integer.valueOf(12);同理//返回int 的Integer实例 
i8=Integer.valueOf(12);
在装箱时如果数字在一个字节之内(-128~127),就会放在一个缓存池,当再次创建该对象时就不在开辟空间,而是直接在缓存池中取出数据,节省内存空间。
枚举
C语言中有枚举
枚举:类中定义的变量的值只能是类中规定的值,这个变量是类类型的变量,每一个枚举都是一个对象
为什么要有枚举
枚举就是让某个类型的变量的取值只能为若干个固定类型中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通方式在开发时无法实现这一目标。
定义一个WeekDay类来模拟枚举的功能
每个元素分别用一个共有的静态成员变量表示
可以有若干共有方法或抽象方法,例如,要提供的getNextDay 方法必须是抽象的采用抽象方法定义getNextDay 就将大量的if else 语句转移成了一个个独立的类
public abstract class WeekDay {
	private WeekDay(){}
	public  static final WeekDay  Mon=new WeekDay(){
		//内部类
		public  String getNextDay()
		{
			return "Tue";
		}
	};
	public final static  WeekDay Tue=new WeekDay(){
		public  String getNextDay()
		{
			return "Thu";
		}
	};
	public final static  WeekDay  Thu=new WeekDay(){
		public  String getNextDay()
		{
			return "For";
		}
	};
	public final static  WeekDay  For=new WeekDay(){
		public  String getNextDay()
		{
			return "Fri";
		}
	};
	public final static  WeekDay Fri=new WeekDay(){
		public  String getNextDay()
		{
			return "Sat";
		}
	};
	public final static  WeekDay Sat=new WeekDay(){
		public  String getNextDay()
		{
			return "Sun";
		}
	};
	public final static  WeekDay Sun=new WeekDay(){
		public  String getNextDay()
		{
			return "Mon";
		}
	};
	public abstract String getNextDay();//抽象方法类也标记成抽象的

}
package cn.heima.day1;

public class EnumTest {
	public static void main(String[] args) {
		WeekDay weekday=WeekDay.Tue;
		System.out.println(weekday.getNextDay());
	}

}
枚举的类用enum 关键字
枚举相当于一个类,枚举中的元素相当于类
枚举自动的将类提供了toString 方法,
提供了name,ordinal,compareTo,valueOf,values (返回数组)
枚举只有一个元素时可以作为是一种单例的实现方式
实现带有抽象方法的枚举
public enum TrafficLamp//带有抽象方法的枚举
	{
		RED(30){
			public  TrafficLamp nextLamp()
			{
				return GREEN;
			}
		},
		YELLOW(5){
			public  TrafficLamp nextLamp()
			{
				return RED;
			}
		},
		GREEN(45){
			public  TrafficLamp nextLamp()
			{
				return YELLOW;
			}
			
		};
		public abstract TrafficLamp nextLamp();//构造方法
		private int time;
		private TrafficLamp(int time){}//构造方法是私有的
		
	}


------- android培训java培训、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值