黑马程序员技术交流社区

标题: for循环里不加操作表达式,也是可以的吗?怎么会这样? [打印本页]

作者: 天天小志    时间: 2014-11-28 00:16
标题: for循环里不加操作表达式,也是可以的吗?怎么会这样?
  1. // 创建TreeSet对象
  2. TreeSet<Student> t = new TreeSet<Student>(new Comparator<Student>(){
  3. @Override
  4. public int compare(Student s1, Student s2) {
  5. int num = s1.getAge()-s2.getAge();
  6. num = (num==0)?(s1.getName().compareTo(s2.getName())):num;
  7. return num;
  8. }

  9. } );

  10. // 创建Student对象,将对象存入集合中去
  11. Student s1 = new Student("linqingxia",26);
  12. Student s2 = new Student("zhouxun",33);
  13. Student s3 = new Student("zhangzishoi",26);
  14. Student s4 = new Student("wanglaowu",55);
  15. Student s5 = new Student("linqingxia",26);

  16. //使用TreeSet类存储对象
  17. t.add(s1);
  18. t.add(s2);
  19. t.add(s3);
  20. t.add(s4);
  21. t.add(s5);
  22. //这里的for循环里不加操作表达式,也是可以的吗?怎么会这样?
  23. for(Iterator iter = t.iterator();iter.hasNext();){
  24. System.out.println((iter.next()));
  25. }
复制代码
for循环里不加操作表达式,也是可以的吗?怎么会这样?

作者: kerner    时间: 2014-11-28 09:27
是的,while(true) 相当于 for(; ;);

作者: 冬天的雪    时间: 2014-11-28 10:10
for( ;  ; ),什么都不加相当于无限循环
作者: l763631191    时间: 2014-11-28 10:26
相当于 while里加ture  永远循环下去!
作者: 十万一千    时间: 2014-11-28 18:01
没有错,就是对的
作者: 王小忠    时间: 2014-11-28 18:22
首先:for循环里不加操作表达式是可以的.然后再说说你的代码:for(Iterator iter = t.iterator();iter.hasNext();){
System.out.println((iter.next()));
}
迭代器循环遍历的话,其中的hasNext()和next()方法在遍历的时候相当于公用一个指针,next()每次调用都会将指针指向下一个元素(也就是相当于我们平时写的i++),所以我们才能循环遍历得到所有的元素.否则的话,将会一直是死循环.
作者: 天天小志    时间: 2014-11-28 21:18
王小忠 发表于 2014-11-28 18:22
首先:for循环里不加操作表达式是可以的.然后再说说你的代码:for(Iterator iter = t.iterator();iter.hasNex ...

头一次见这样的格式,谢谢你的回答,我明白了!
作者: 斷灬dian    时间: 2015-1-4 21:46
                             学到了  谢谢分享!
作者: Y_木头人    时间: 2015-1-5 21:25
每天学习一点点,受教了。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2