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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 史庆宇 中级黑马   /  2013-4-16 16:37  /  5119 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下,for(File file : files) 这个是什么意思?
File[] files = dir.listFiles();
                for(File file : files){
                        if(file.isDirectory()){
                                removeDir(file);
                        }else{
                                //删除文件
                                System.out.println(file+":"+file.delete());;
                        }
                }



评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

11 个回复

倒序浏览
for(File file : files) 这是高级for循环
高级for循环的格式:for(数据类型 变量名:被遍历的集合或数组)

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
这个是Java1.5的新特性,增强的for循环呀!
意思就是: 遍历数组files,数组的类型是File,变量用file代替
希望对你有帮助!
回复 使用道具 举报
for(File file : files) 是JDK1.5的新特性,黑马免费学习视频里有你可以看看。
其实可以看成把files里的每个对象都用file这个名字用了一次,而且每次都覆盖前面的file。循环结束这个名字就没了。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
增强for循环,是为了更方便的遍历数组和集合而用的,可以很方便的对集合和数组进行操作。
格式:
如int[] arr={1,2,3,4,5}这是一个数组,类型为int
遍历数组就用
for(int a:arr)//这里int是定义元素类型,a是元素名,arr是被遍历的数组,集合同理。
{
     System.out.println(a);//对元素进行操作
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
楼主 你好   
这个是增强型for循环,在遍历数组,或者是带有泛性的集合时非常方便,格式如下
增强for(part1:part2){part3};

part2中是一个数组对象,或者是带有泛性的集合.
part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的.
part3当然还是循环体.

foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。 foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。 foreach的语句格式:for(元素类型t 元素变量x : 遍历对象obj){     引用了x的java语句;} 下面通过两个例子简单例子看看foreach是如何简化编程的

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
答题开始:
问题: for循环中File file : files)这个什么意思?
答:首先了解一样东西:
      在Java语言的最新版本——J2SE 1.5中,引入了另一种形式的for循环。借助这种形式的for循环,现在可以用一种更简单地方式来进行遍历的工作。
这是第二种for循环
不严格的说,Java的第二种for循环基本是这样的格式:
for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体
也就是 楼主你的代码
  1. File[] files = dir.listFiles();
  2.                 for(File file : files){
  3.                         if(file.isDirectory()){
  4.                                 removeDir(file);
  5.                         }else{
  6.                                 //删除文件
  7.                                 System.out.println(file+":"+file.delete());;
  8.                         }
  9.                 }
复制代码
小结:这种方法不是万能的,因为java的需求业务不同,实现的功能,for循环的判断条件也不同!所以要具体问题具体分析!
希望能给你带来帮助!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
  1. File[] files = dir.listFiles();
  2. for (File file : files) {
  3.         if (file.isDirectory()) {
  4.                 removeDir(file);
  5.         } else {
  6.                 // 删除文件
  7.                 System.out.println(file + ":" + file.delete());
  8.         }
  9. }
复制代码
以上代码可以改写成:
  1. File[] files = dir.listFiles();
  2. for (int i=0; i<files.length; i++) {
  3.         File file = files[i];
  4.         if (file.isDirectory()) {
  5.                 removeDir(file);
  6.         } else {
  7.                 // 删除文件
  8.                 System.out.println(file + ":" + file.delete());
  9.         }
  10. }
复制代码
可见第一种方式书写简单,但也有局限性,即只能遍历数组或集合中的所有元素,灵活性不能与第二种方式相较。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
黄玉昆 黑马帝 2013-4-17 09:12:10
9#
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
本帖最后由 hdsjsql 于 2013-4-17 15:05 编辑

for(File file : files) 是一个加强for语句,本例中依次遍历files中的元素,步进为一,并将其赋值给file.   
相当于for(i=0;i<files.length;i++)
     {            
           file=files;         }





评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
刚才打错了,应该是:
for(File file : files) 是一个加强for语句,本例中依次遍历files中的元素,步进为一,并将其赋值给file.   
相当于for(i=0;i<files.length;i++)
     {            
           file=files[i];         }  //files[i]打成了files
回复 使用道具 举报
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马