黑马程序员-java高新技术01

----------------------android培训java培训、java学习型技术博客、期待与您交流!----------------------

 

jdk1.5中的一些新特性:

 

1.静态导入(Static Import)

        什么时候使用静态导入呢?保守起见的说,当你需要频繁的使用到某个类中的静态成员的时候,就可以使用静态导入了,静态的导入的方式跟导入普通的类类似,这样在使用该类中的静态成员时,就可以略写该类。不过凡事都有两面性,如果你滥用静态导入的特性,这将会使你程序的可读性降低,并且会与其他使用静态导入的成员混肴,当一段时间过后,将很难区分出静态成员是属于哪个类的。还有,当使用静态导入的特性时,最好仅导入要使用到的静态成员,如果导入类中的所有静态成员,同样会导致代码的可读性降低。

        注:静态导入并不会占用任何的资源。

/**
 * 静态导入示例
 */
import static java.lang.Math.*;	//静态导入语法

public class StaticImport {
	public static void main(String[] args) {
		System.out.println(max(10, 9));
	}
}

 

2.可变参数(Varargs)

        举个例子,在jdk 1.5之前当我们对多个数进行运算时,需要写多个重载的方法以适应不同的需求,而可变参数的出现改善了这种情况。可变参数内部会自动的封装一个数组,所以我们可以像数组那样来访问可变参数。可变参数只能出现在参数列表的最后。

 

/*
 * 可变参数示例
 */
public class VariableParameter {
	public static void main(String[] args) {		
		System.out.println(add1(2, 3));
		System.out.println(add2(2, 3, 4));
		
		System.out.println(add3(2, 3));
		System.out.println(add3(2, 3, 4));
	}
	
	//jdk 1.5之前
	public static int add1(int x, int y) {
		return x + y;
	}
	
	public static int add2(int x, int y, int z) {
		return x + y + z;
	}
	
	//jdk 1.5  可变参数
	public static int add3(int x, int... args) {
		int sum = x;
		
		for (int i = 0; i < args.length; i++) {
			sum += args[i];
		}
		
		return sum;
	}
}

 

3.增强for循环(For-Each Loop)

         语法:for (type 变量名 :变量) { ... ...}

         增强for循环可以适用于数组以及继承了Iterable接口的集合类,需要注意的是迭代变量必须在()中定义,你可以再任何时候使用该特性,它可以使你的代码更加的漂亮,不过不幸的是,你并不能在任何地方使用它,比如说你想操作迭代变量中的特定元素时,使用该特性就无法满足你的需求,因为该特性隐藏了迭代器,所以无法获取特定的元素。

/*
 * 增强for循环示例
 */
public class ForEach {
	public static void main(String[] args) {
		System.out.println(add(2, 3));
		System.out.println(add(2, 3, 4));
	}
	
	public static int add(int x, int... args) {
		int sum = x;
		
		for (int arg : args) {
			sum += arg;
		}
		
		return sum;
	}
}

 

4.自动装箱和拆箱(Autoboxing/Unboxing)

        我们知道不能将一个int类型的变量加入到一个集合中,不过下面的代码在jdk 1.5中的确可以正常运行

 

import java.util.ArrayList;

public class AutoBox {
	public static void main(String[] args) {
		ArrayList<Integer> al = new ArrayList<Integer>();
		al.add(1);   //自动装箱
		al.add(2);
		al.add(3);
		
		for (Integer i : al) {
			System.out.print(i);  //自动拆箱
		}
	}
}

这就是自动装箱与拆箱功能,它会将int类型的基本数据类型变量自动的封装成一个Integer类型的对象。当我们需要取出集合中的数据时,用的仅仅是System.out.print(i);  这样的语句而编译器确不会报错,那是因为jdk 1.5中自动拆箱功能,它会将Integer类型的对象自动的转成int基本数据类型。

 

----------------------android培训java培训、java学习型技术博客、期待与您交流!----------------------

 

详情请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值