A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵志勇 中级黑马   /  2012-5-12 09:48  /  8413 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚才看视频时,看到20天的文件列表,有个地方不理解:
  
public static void listRootDemo()
{
    File [] files=File.listRoots();
  
  for (File f:files)
   {
          System.out.pringln(f);
   }
}
这里的for 循环怎么会写成这样呢?for( ; ; )不是这样的吗?求明白人回答。for (File f:files)是什么意思?

14 个回复

倒序浏览
for (File f:files)是什么意思?
意思是创建一个File类型的对象 把files数组中的每一个元素取出来付给File类型的对象 然后做一些操作 这种for循环叫做增强for循环 也叫做foreach 效率比普通for循环高
回复 使用道具 举报
for (File f:files)是java中的增强for循环,这里可以这样理解,
        for(File f=null,int len=0;len<files.length;len++)
        {
                f=files[len];
        }
回复 使用道具 举报
for (File f:files)是增强for循环的写法,它是JDK5.0以后出现的新特性。增强For循环,主要是用于对数组和集合进行遍历,使用它会使用程序的代码短小而精炼得很多。功能和传统的for循环差不多,但是增强for循环是有局限的,比如在遍历集合的时候就不能对集合进行操作,但用迭代器时可以用迭代器的remove()方法;在遍历数组的时候就不能定义索引,传统for循环就可以定义索引。增强for循环一般用在不需要对集合或者数组本身进行操作的时候,比如显示输出信息等。增强for循环的语法:for(参数类型 变量名 : 要遍历的集合或数组引用) {循环体}。增强for循环的内部实现方式和迭代器差不多的。
回复 使用道具 举报
高级for循环,后面就会学到你。学习它时,建议 把握高级for的特点和传统for的区别。有利于理解使用。
回复 使用道具 举报
本帖最后由 小小企鹅 于 2012-10-27 22:30 编辑

for (File f:files) 增强For循环,它能对数组和集合进行遍历。
对于数组,不能方便的访问下标值;
对于集合,与使用Interator相比,不能方便的删除集合中的内容,
可以简单遍历并读取其中的内容
回复 使用道具 举报
这是JDK1.5后的新特性,增强的for循环,也可以说成是foreach,貌似在c#里就是用foreach表示这增强的for循环的。
回复 使用道具 举报
杨鹏 发表于 2012-5-12 10:08
for (File f:files)是增强for循环的写法,它是JDK5.0以后出现的新特性。增强For循环,主要是用于对数组和集 ...

我还是不能理解,for(File f:files )什么意思,它是遍历文件目录?
回复 使用道具 举报
啷个里个郞 发表于 2012-5-12 10:20
高级for循环,后面就会学到你。学习它时,建议 把握高级for的特点和传统for的区别。有利于理解使用。 ...

在视频的哪里?
回复 使用道具 举报
张老师java基础加强里面有
回复 使用道具 举报
赵志勇 发表于 2012-5-12 11:54
在视频的哪里?

张老师java基础加强里面有
回复 使用道具 举报
高级for循环 效率更高  你可以理解为定义一个临时变量f  然后每次循环他就会被数组附上数组角标+1的值.   知道等于数组长度结束
回复 使用道具 举报
赵志勇 发表于 2012-5-12 11:52
我还是不能理解,for(File f:files )什么意思,它是遍历文件目录?

for (File f:files)这是遍历一个File类型的数组,f可以看成是数组里面的元素
回复 使用道具 举报
这个是1.5之后的新东西,叫for in语句,for (File f:files)的意思就是将files里面的东西,依次赋值给File类型的f,f也就是一个临时变量,跑龙套的,是遍历files时用来临时存放单个元素的。
       怎么理解呢?下面个简单的例子
  1. /**
  2. * 作者:于陈
  3. * 功能:演示for(int j:arr)的作用
  4. * 时间:2012年5月12日 12:49:35
  5. */

  6. public class Test {
  7.         public static void main(String args[]) {
  8.                 int[] arr = new int[] { 1, 2, 3 };
  9.                 //普通for循环
  10.                 for (int i = 0; i < arr.length; i++) {
  11.                         System.out.println(arr[i]);
  12.                 }
  13.                 //  for in语句
  14.                 for (int j : arr) {
  15.                         System.out.println(j);
  16.                 }

  17.         }
  18. }
复制代码
这样应该能理解了吧?
回复 使用道具 举报
于陈 发表于 2012-5-12 12:50
这个是1.5之后的新东西,叫for in语句,for (File f:files)的意思就是将files里面的东西,依次赋值给File类 ...

彻底征服,谢谢,版主加技术。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马