黑马程序员技术交流社区
标题:
哪位师兄帮忙解读以下这段代码?
[打印本页]
作者:
冷月霜飞
时间:
2015-5-18 18:47
标题:
哪位师兄帮忙解读以下这段代码?
for (Iterator it = coll.iterator(); it.hasNext();) {
Student student = (Student) it.next();
System.out.println(student.getName());
}
复制代码
对于以上代码有点看不懂,for循环括号内依次不应该是初始化值,条件表达式吗?
作者:
as604049322
时间:
2015-5-18 19:18
任何for循环都可以用while来换
for(初始化:成立条件:每次循环结束前执行){
主体代码......
}
就可以转换为:
初始化....
while(成立条件){
主体代码......
每次循环结束前执行
}
甚至可以变成
初始化....
while(true){
if(!成立条件)
break;
主体代码......
每次循环结束前执行
}
那么
for (Iterator it = coll.iterator(); it.hasNext();) {
Student student = (Student) it.next();
System.out.println(student.getName());
}
就可以变成:
Iterator it = coll.iterator();
while (it.hasNext()) {
Student student = (Student) it.next();
System.out.println(student.getName());
}
或者
Iterator it = coll.iterator();
while (true) {
if(!it.hasNext())
break;
Student student = (Student) it.next();
System.out.println(student.getName());
}
那么上面的代码在空间占用的角度有什么区别呢?
区别就是for循环在运行完成后,变量it就被释放了,外界不能继续使用,而while循环执行完成后变量it依然存在,可以继续使用。
从空间占用上来说,我选择使用for循环完成迭代,但因此导致你看不懂的话,我还是改用while循环把
作者:
348532020
时间:
2015-5-18 20:21
楼上完全正解。
就是Iterator it = coll.iterator(); 作为初始化条件, it.hasNext();作为判断条件,然后最后增量表达式没有,因为不需要增量,只判断 it.hasNext()真假值就行了。所以可以那么写。
作者:
JARVIS_YJ
时间:
2015-5-18 20:27
楼上正解
作者:
狙神自傲
时间:
2015-5-18 21:11
不得不佩服二楼。
作者:
冷月霜飞
时间:
2015-5-18 21:17
as604049322 发表于 2015-5-18 19:18
任何for循环都可以用while来换
for(初始化:成立条件:每次循环结束前执行){
主体代码......
谢谢师兄回复!
作者:
0416朱珅平
时间:
2015-5-18 22:15
这个一个迭代器,可以遍历数组 集合 等等, 可以这样写
作者:
雪风飞花
时间:
2015-5-18 22:23
二楼给得好详细
作者:
黄冬
时间:
2015-5-18 22:41
二楼说的好
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2