您的位置:首页 > 职场人生

黑马程序员--高新技术--可变参数,增强for循环,枚举

2013-07-17 01:37 441 查看

----------------------Android培训Java培训、期待与您交流!
----------------------

可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。

public class VaribalParameter {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=add(3,4,5,9);  //类型确定,参数个数可变
		int sum2=add(3, 4,5,9,11,23,99,100);
		System.out.println(sum);
		System.out.println(sum2);
	}
	
	//定义求和方法中 第二个变量为可变参数
	public static int add(int a,int ...args)
	{	//调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,
		//在方法体中以数组的形式访问可变参数
		int sum=a;
		// 注释整个段落:选中 Ctr+shift+/
		for(int i=0;i<args.length;i++)
		{
			sum=sum+args[i];
		}
		return sum;
	}
}
/* 可变参数的特点:
只能出现在参数列表的最后;
...位于变量类型和变量名之间,前后有无空格都可以;
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
*/

增强for循环

for ( type 变量名:集合变量名 ) { … }

public class ForDemo {
	public static void main(String[] args) {
		int[] array=new int[]{12,32,97,94,72,13};
		System.out.print("采用普通for循环遍历打印:");
		for(int i=0;i<array.length;i++)
		{
			System.out.print(array[i]+"\t");
		}
		
		System.out.print("\n采用增强for循环遍历打印:");
		for(int arr:array)
		{
			System.out.print(arr+"\t");
		}
	}
}
/*
 * 注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类
*/


缺点:

对于数组,不能方便的访问下标值;

对于集合,与使用Interator相比,不能方便的删除集合中的内容(在内部也是调用Interator).

除了简单遍历并读取其中的内容外,不建议使用增强的for循环。

枚举

枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
public class EnumTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(Week.Friday);
		System.out.println(Week.MONDAY);
		
		Week sun=Week.Saturday;
		System.out.println("枚举name---"+sun.name());
		System.out.println("枚举ordinal---"+sun.ordinal());
		System.out.println("枚举getClass---"+sun.getClass());
		System.out.println("枚举valueOf---"+sun.valueOf("Saturday"));
	}
	//定义一个枚举
	public enum Week
	{
		MONDAY,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
	}
	
	//枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法
	public enum SeasonEnum 
	{
		//注:枚举写在最前面,否则编译出错        
		spring, summer, autumn, winter;
		
		private final static String position = "test";
		public static SeasonEnum getSeason()
		{
			if("test".equals(position)){
				return spring;
			}
			else
			{
				return autumn;
			}
		}
	}
}

带抽象方法的枚举
//定义个交通灯枚举,带上抽象方法的枚举
	public enum TrafficLamp
	{
		RED(30) {//每个元素通过TrafficLamp子类完成抽象方法
			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return GREEN;
			}
		},
		GREEN(45){
			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return YELLON;
			}
		},
		YELLON(5){
			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return RED;
			}
		};
		public abstract TrafficLamp nextLamp(); 
		private int time;  //定义私有成员变量
		private TrafficLamp(int time){
			this.time=time;
		}
	}


----------------------Android培训Java培训、期待与您交流!
----------------------

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐