您的位置:首页 > 编程语言 > Java开发

java5.0中增强的for/in循环

2013-08-18 09:59 316 查看
看书的时候看到这个知识点,想了解详细点所以就在一些博客上看到了这方面的资料,找到了两篇觉得写得不错了,那篇短一点的我直接转载过来了,长的我就粘贴个地址吧,方便更全面的了解这个知识点http://blog.csdn.net/hanxs/article/details/3850142

以前写遍历是:

//遍历数组

for(int i = 0; i < array.length; i ++) ...{

int n = array[i];

//do something

}

//遍历集合

for(Interator iter = list.iterator(); iter.hasNext(); ) ...{

Object o = iter.next();

//do something

}现在使用增强型的:
//遍历数组:

//以前我们这样写:

void someFunction () ...{

int[] array = ...{1,2,5,8,9};

int total = 0;

for (int i = 0; i < array.length; i++) ...{

total += array[i];

}

System.out.println(total);

}

//现在我们只需这样写(和以上写法是等价的):

void someFunction () ...{

int[] array = ...{1,2,5,8,9};

int total = 0;

for (int n : array) ...{

total += n;

}

System.out.println(total);

}

这种写法的缺点:

显而易见,for/in(for each)循环自动控制一次遍历数组中的每一个元素,然后将它赋值给一个临时变量(如上述代码中的int n),然后在循环体中可直接对此临时变量进行操作。这种循环的缺点是:

1.       只能顺次遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素;

2.       循环变量(i)不可见,如想知道当前遍历到数组的第几个元素。

遍历集合:
//以前我们这样写:

void someFunction () ...{

List list = new ArrayList();

list.add("Hello ");

list.add("Java ");

list.add("World!");

String s = "";

for (Iterator iter = list.iterator(); iter.hasNext();) ...{

String temp= (String) iter.next();

s += temp;

}

System.out.println(s);

}

//现在我们这样写:

void someFunction () ...{

List list = new ArrayList();

list.add("Hello ");

list.add("Java ");

list.add("World!");

String s = "";

for (Object o : list) ...{

String temp = (String) o;

s += temp;

}

System.out.println(s);

}

// 如果结合“泛型”,那么写法会更简单,如下:

void someFunction () ...{

List<String> list = new ArrayList<String>();

list.add("Hello ");

list.add("Java ");

list.add("World!");

String s = "";

for (String temp : list) ...{

s += temp; //省去了对强制类型转换步骤

}

System.out.println(s);

}

//上述代码会被编译器转化为:

void someFunction () ...{

List<String> list = new ArrayList<String>();

list.add("Hello ");

list.add("Java ");

list.add("World!");

String s = "";

for (Iterator<String> iter = list.iterator(); iter.hasNext(); ) ...{

String temp = iter.next();

s += temp;

}

System.out.println(s);

}


这种写法的缺点:

         虽然对集合进行的for/in操作会被编译器转化为Iterator操作,但是使用for/in时,Iterator是不可见的,所以如果需要调用Iterator.remove()方法,或其他一些操作, for/in循环就有些力不从心了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  forin循环 java5.0