黑马程序员-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