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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈嘉宾 中级黑马   /  2012-6-5 21:37  /  1584 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈嘉宾 于 2012-6-5 22:00 编辑

遍历文件是说都要用字符数组方法吗?还有for(String name:arr)这句话是什么意思?

public static void listDemo2()
        {
               
                File dir=new File("d:\\java1223\\day18");
                String[] arr=dir.list(new FilenameFilter()
                        {
                                public boolean accept(File dir,String name)
                                {
                                       
                                        return name.endWith(".bmp");
                                }
                        });
               
                for(String name:arr)
                {
                        System.out.println(name);
                }
        }

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 杜俊彪 于 2012-6-5 21:54 编辑

是字节数组吧;  其实字节数组是一个字节一个字节的读的,只不过是把那些字符先存到你定义的字节数组中;      当然用字符流也可以读,是一个字符一个字符的读,也可以整行整行地读,但整行地读的原理是一个 字符一个符地读,先将它们一个一个存入字符数组,然后一次性读出来 ;                             和这个一个意思;      好好比较一下吧!!!
  1. for(int name=0 ;name<arr.length;name++){
  2.                       System.out.println(arr[name]) ;
  3.      }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 祝贺你,圆满完成任务...

查看全部评分

回复 使用道具 举报
这个是增强for循环的用法:for循环PK版!
格式:
for(循环的变量类型 循环变量的名称 : 要被遍历的目标)
   {
      具体循环内容;
  }

其实加强版功能用原版一样可以实现,就你的例子来说:
加强for循环:
for(String name:arr)
{
     System.out.println(name);
}
普通for循环:
for(int name=0; name<arr.length; name++)
{
     System.out.println(arr[name]);
}

加强版我们可以看出来,加强版木有name<arr.length这一段,也就是不用判断条件(本题为数组长度)。
这样就避免了下表越界的情况啦~

但是我现在一直还是用原版,打好基础才是王道

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
  String[] arr这个不是字符型数组吗?
回复 使用道具 举报
陈嘉宾 发表于 2012-6-5 21:53
String[] arr这个不是字符型数组吗?

是字符数组,  但它是一个字符串一个字符串地输出来的;   例如 arr[0] = "abc" ;  System.out.println(arr[0]) ; 输出  abc
回复 使用道具 举报
这种for循环是增强循环,简化了集合的遍历。
本质上和for(int i=0;i<length;i++)没太大区别。
举个例子,假设我们要遍历一个集合对其中的元素进行一些处理,代码如下
void processAll(Collection c){
           for(Iterator i=c.iterator(); i.hasNext(); ){
                  MyClass myObject = (MyClass)i.next();
                  myObject.process();
         }
}
使用For-Each循环,我们可以把代码改写成:
void processAll(Collection<MyClass> c){
          for (MyClass myObject :c)
          myObject.process();
}
这样就增强了代码的阅读性,避免了强制类型转换。
for(String name: arr)的意思是:for(String name: arr)中的arr是字符串数组,意思是每次循环取一个字符串出来赋值给name,直到arr数组长度-1结束。

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
哦明白了谢谢!
回复 使用道具 举报
遍历文件是说都要用字符数组方法吗?还有for(String name:arr)这句话是什么意思?
这里的for是高级for循环。格式for(变量类型 变量名: 集合或数组){}这里的集合必须是实现了iterable接口的。
与普通的for语句需要循环变量 速度不及增强for循环  其实增强for循环只是简化下for   至于什么时候用  看需不需要循环变量来操作循环的数组或者集合 ,需要就选用高级for。   



评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马