JAVA5推出已经很长时间了,相比以前的版本,这次有了很多很好的新特性,在这里就和大家分享和探讨一下。
循环操作的增强
循环操作的增强对集合和数组提供了简单,一致的语法。
1.变量初始化
以前的代码实现:
int sum = 0;
Integer[] numbers = computeNumbers();
for (int i=0; i < numbers.length ; i++)
sum += numbers[i];
以上的初始化仅仅会在循环内部求值,就是说你常常可以除去这个声明的变量。在上面这个例
子里我们必须创建一个Integer数组来维持computeNumber()方法返回的Integer数组结果,为
的是在循环执行时不用重复计算computeNumber()方法返回值大小。
JAVA5代码实现:
int sum = 0;
for ( int number: computeNumbers() )
sum += number;
这就比以前的代码看起来更简洁,也不用声明一个中间变量numbers。
局限:
在要访问集合或数组内部值(numbers[i]),我们必须要使用JAVA5以前的写法:
for (int i=0; i < numbers.length ; i++) {
if (i != 0) System.out.print(",");
System.out.print(numbers[i]);
}
上面的代码时将数组值用逗号(,)隔开,这种必须要用索引的程序只有用以前的写法了。
for (Iterator<integer> it = n.iterator() ; it.hasNext() ; )
if (it.next() < 0)
it.remove();
上面的代码是要删除值为负数的项,我们必须一个个进行迭代,如果用循环增强显然为我们
隐藏了这些,不能达到效果,必须用以前的写法达到效果!
完整的例子:
import java.util.*;
public class GenericArrayExample {
public static void main(String args[])
{
//Vector<Integer> vectorList[] = new Vector<Integer>[10];
//Vector<Integer> vectorList[] = new Vector<Integer>[];
//Vector vector[] = new Vector[10];
int sum = 0;
for ( int number: computeNumbers() )
sum += number;
System.out.println(sum);
Integer[] numbers = computeNumbers();
for (int i=0; i < numbers.length ; i++) {
if (i != 0) System.out.print(",");
System.out.print(numbers[i]);
}
}
private static Integer[] computeNumbers() {
// TODO Auto-generated method stub
return new Integer[]{new Integer(1),new Integer(2),new Integer(3)};
}
}