----------------------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学习型技术博客、期待与您交流!----------------------