JDK1.5新特性

一、静态导入(Static Imports)

jdk1.5之前:

java.lang.Math.abs(-100);

jdk1.5之后:

import static java.lang.Math.abs;

abs(-100);

注意:过度使用这个特性也会一定程度上降低代码地可读性。

二、可变参数(Varargs)

jdk1.5之前:

使用数组代表方法中任意个参数:

pulic static int sum(int[] is){
	int sum=0;
	for(int i=0;i<is.length;i++){
		sum+=is[i];
	}
	return sum;
}

public static void main(String[] args) {
	int[] is = {1,3,5,7};
	sum(is);
}

jdk1.5之后:

public static int sum(int… is){
	return 0;
}
		
public static void main(String[] args) {
	sum(1,2);
	sum(4,5,6,7);
}

注意:防止同一个类中出现重写的方法出现两个可变参数的方法。

三、增强for循环(For-Each)

jdk1.5之前:

void printAll(List<Emploeye> list) { 
  for (Iterator i = list.iterator(); i.hasNext(); ) { 
      Employee emp = i.next(); 
      System.out.println(emp.getName()); 
  } 
}

jdk1.5之后:

void printAll(List<Emploeye> list) { 
  for (Emploeye e : list) 
      System.out.println(e.getName()); 
}

在增强for循环中,你应该将":"看成"in",所以,在该例中可以看成"for Object o in c"。你可以发现这种For循环更具可读性。

注意:For-Each丢掉了索引信息。当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。

四、自动装箱/拆箱(Autoboxing/unboxing)

1.自动装箱

把一个基本类型的数据变成对象类型。

Integer i = new Integer(2);
//3自动装箱为Integer类型
System.out.println(i.equals(3));

2.自动拆箱

从对象类型中抽取出原始类型。

Integer i = new Integer(2);
//i自动拆箱为int类型
System.out.println(i==2);

五、枚举(Enum)

JDK1.5加入了一个全新类型的“类”-枚举类型,为此JDK1.5引入了一个新关键字enmu。当每一类型可取值范围是有限的时候,可以使用枚举。使用枚举增加程序的易读性和健壮性。我们可以这样来定义一个枚举类型:

public enum Color{
   Red,
   White,
   Blue
}
然后可以这样来使用:
Color myColor = Color.Red;
枚举类型还提供了两个有用的静态方法values()和valueOf(). 我们可以很方便地使用它们,例如
for (Color c : Color.values())
    System.out.println(c);

六、注解/标签(annotation)

注解也被称为元数据。每当你创建描述符性质的类或接口时,一旦其中包含了重复性的工作,那就可以考虑使用注解来简化或自动化该过程。

更多介绍请访问:http://my.oschina.net/hongdengyan/blog/179732

七、泛型(Generic)

C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。jdk1.5引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。

Collection<String> c = new ArrayList();
c.add(new Date());
编译器会给出一个错误:
add(java.lang.String) in java.util.Collection<java.lang.String> cannot be applied to (java.util.Date)

你可能感兴趣的:(JDK1.5新特性)