al.iterator()的作用是生成迭代器,而且,每运行一次这个方法,就生成一个迭代器,如果将
这句代码写在while内部,那么每次循环都会生成一个新的迭代器,每个迭代器的第一个元素
肯定是“abc1",所以一直循环打印相同的内容。
如果非要将迭代器写入循环,我觉得改为for循环是可以的:
for(Iterator it=al.iterator(); it.hasNext();){}(注意,自增部分可以省略)
至于怎样解释这个冒号,恕无能为力,这是java定义的,就像你不能解释为什么三元运算符
中会用到冒号和问号一样。java的规定,就不要问为什么了。
s代表的是al集合中的任一String类型的变量,可以实现对集合中变量的操作,有时可以看做
一般for循环。高级for循环和一般for循环的区别在于:一般for循环可以对角标进行操作,而
高级for循环是无法实现角标操作的。正如毕老师所说:凡是简便的,都有其弊端。
希望能讲解清楚。 |