黑马程序员------java新特性

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

Java新特性包括:

1,静态导入

2,增强for循环

3,自动装箱与拆箱

4,可变参数

5,枚举

6,反射机制



1,

静态导入

import static java.lang.Math.*;//静态类导入

public class StaticImport
{

    /**静态导入:
     * 将静态方法 或者静态类导入
     * 因为静态方法必须在前面加上类名。 比如Math.max  需要在max前面加上Math
     * 静态导入后则不需要再方法名前加入类名。
     * @param args
     */
    public static void main(String[] args)
    {
	System.out.println("3和6谁大:"+max(3, 6));//不用再前面加上Math
	System.out.println("3-6的绝对值:"+abs(3-6));//不用再前面加上Math
	
    }

}




2,增强for循环

/传统的数组遍历
		String[] persons={"张三","李四","王五"};
		for(int i=0;i<persons.length;i++){
			System.out.println(persons[i]);
		}
//使用增强for循环的数组遍历
		String[] persons={"张三","李四","王五"};
		for(String person:persons){
			System.out.println(person);



//传统的Iterator遍历集合
		List<String> persons=new ArrayList<String>();
		persons.add("张三");
		persons.add("李四");
		persons.add("王五");
		for(Iterator<String> i=persons.iterator();i.hasNext();){
			String person=i.next();
			System.out.println(person);
		}
//使用增强For循环遍历集合
		List<String> persons=new ArrayList<String>();
		persons.add("张三");
		persons.add("李四");
		persons.add("王五");
		for(String person:persons){
			System.out.println(person);
		}


3,自动装箱与拆箱

/**
 * 自动装箱与拆箱
 * 
 * 引出享元模式
 * 
 * @author Administrator
 * 
 */
public class AutoBox
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
	// 将int类型包装秤Integer(装箱)
	Integer iobj = 3;

	// 将Integer类型和int类型直接相加 会自动将Integer类型转换成int (拆箱)
	System.out.println(iobj + 4);

	// 享元模式
	/**
	 * 将大量的重复使用的有很多属性相同的小对象,把他们变成一个对象,变成共享的。 对于多个相同的对象,为了优化资源,可以共享一个对象。
	 * 举例:文本编辑器中的英文单词,如果输入一个英文字符就要建立一个对象,那么对象 将庞大无比,使用享元模式,将26个封装成26个对象
	 * 当使用的时候只要传递坐标值, 这样大大减少内存的使用
	 */

    }

}





4,可变参数

public class VaribleParameter
{

    /**
     * 可变参数:
     * 在传递参数中 ,参数是可变的;
     * 使用... args 的形式    ... args 必须放在参数列表的最后
     * 
     */
    public static void main(String[] args)
    {
	System.out.println(add(2,3));
	System.out.println(add(2,3,5));
    }
    
    //这里举的例子:传递参数,计算参数之和,参数不固定
    public static int add(int x, int ...args)
    {
	int sum =0;
	for (int i = 0; i < args.length; i++)
	{
	    sum += args[i];
	}
	return sum;
    }

}








5,枚举:

/**
 * 枚举类型:enum
 * 
 * @author Administrator
 * 
 */
public class EnumDemo
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
	// 建立枚举对象,传递了星期五
	WeekDay weekDay = WeekDay.FRI;

	// 第一:打印结果(结果为FRI 自动实现了toString()方法)
	System.out.println(weekDay);

	// 第二:获得自己的名字
	System.out.println(weekDay.name());

	// 第三:获得自己的位置(排行)
	//  /*ordinal()返回枚举值在枚举中的索引位置,从0开始*/
	System.out.println(weekDay.ordinal());

	// 第四:注意这里用的是枚举类 而不是他的对象 调用了toString方法
	System.out.println(WeekDay.valueOf("SUN"));

	// 第五:values()方法 将枚举元素 放入数组 ,想对枚举每个元素进行遍历时使用
	// 这里是获得数组的大小
	System.out.println(WeekDay.values().length);
    }

    // 定义枚举 一周
    public enum WeekDay
    {
	/**
	 * 枚举的列表必须放在最前面 构造方法必须私有
	 */
	SUN(1), MON, TUE, WED, THI, FRI, SAT;
	private WeekDay()
	{
	    System.out.println("调用空参数的构造方法");
	}

	private WeekDay(int day)
	{
	    System.out.println("调用整型参数的构造方法");
	}

    }

    // 枚举抽象方法
    public enum TrafficLamp
    {
	// 必须实现抽象方法(如果构造方法中 带参数 这里实现的时候也要带参数)
	RED(30)
	{
	    public TrafficLamp nextLamp()
	    {
		return GREEN;
	    }
	},
	GREEN(45)
	{
	    public TrafficLamp nextLamp()
	    {
		return YELLOW;
	    }
	},
	YELLOW(5)
	{
	    public TrafficLamp nextLamp()
	    {
		return RED;
	    }
	};

	// 定义抽象方法 返回值是TrafficLamp
	public abstract TrafficLamp nextLamp();

	// 定义时间 灯的时间
	private int time;

	// 使用构造方法
	private TrafficLamp(int time)
	{
	    this.time = time;
	}
    }

}









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

你可能感兴趣的:(黑马程序员------java新特性)