java iterator遍历的问题

定义了一个list,

List l = new ArrayList();
使用iterator遍历
Iterator it=l.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
这样正常,
但是不把l.iterator赋给变量,
while(l.iterator().hasNext()){
System.out.println(l.iterator().next());
}
这样就无限循环,为什么?
各位大神求赐教

l.iterator().hasNext()
每次返回的是一个新的迭代器,状态都是初始的,所以每次next都是第一个元素,当然就无限循环了。