黑马程序员技术交流社区

标题: 关于高级for循环的问题 [打印本页]

作者: 张天军    时间: 2013-12-24 18:01
标题: 关于高级for循环的问题
  1. import java.io.*;
  2. class FileDemo
  3. {
  4.     public static void main(String[] args)
  5.     {
  6.         listRootsDemo();
  7.     }
  8.     public static void listDemo()
  9.     {
  10.         File f = new File("c:\\");
  11.         String[] names = f.list();
  12.         for(String name : names)
  13.         {
  14.             System.out.print(name)
  15.         }
  16.     }
  17.     public static void listRootsDemo()
  18.     {
  19.         File[] = new File.listRoots();
  20.         for(File f : files)
  21.         {
  22.             System.out.println(f);
  23.         }
  24.     }
  25. }
复制代码


        File[] = new File.listRoots();

这句语句中,File[] 后面是 f 还是 files ;

高级for循环简化了普通for循环,那么有哪些弊端呢?
作者: just_nnnnx    时间: 2013-12-24 19:02
File f 是File[] files中的元素,所以当然是Files啦
作者: 松毛    时间: 2013-12-24 19:57
这个当然是files了,高级for循环的格式:for(类型  变量名:被遍历的对象)  {...}
第一个为遍历结果的类型,第二个只是变量名称,这个名称是自己起的,冒号后面的就是要遍历的目标了。
使用高级for循环有的时候书写比较简便,但是它的局限性就是要有被遍历的目标,没有遍历的目标就不能使用了,这个示例中的files就是遍历目标了。像遍历数组时就 建议使用传统for循环了,因为传统for循环能够操作数组的角标,而这点高级for循环式做不到 的。
作者: 恩恩    时间: 2013-12-24 20:21
是files,因为这个地方你遍历的是整个C盘的文件,它里面包含了很多的文件,下面你使用for(File f : files)这个遍历的时候,就是遍历所有的files。 使用这种写法的最大优点就是简单,什么意思呢,给你举个例子,和list有关的,看下面的代码:
for(Location temp : locationList){
                                System.out.println(temp.getLatitude());
                                System.out.println(temp.getLongitude());
                        }
这个里面locationList是一个list类型的对象,里面放了很多的数据,现在要遍历整个list对象,那么直接就可以这样简单的写,但是如果使用普通的for循环,那么就必须要知道这个长度呀之类的,什么的。
作者: 汪洋大海    时间: 2013-12-24 20:26
恩恩 发表于 2013-12-24 20:21
是files,因为这个地方你遍历的是整个C盘的文件,它里面包含了很多的文件,下面你使用for(File f : files) ...

恩恩同学很勤奋呀
作者: 恩恩    时间: 2013-12-24 20:30
汪洋大海 发表于 2013-12-24 20:26
恩恩同学很勤奋呀

呵呵,为啥这么说啊,嘻嘻。
作者: 汪洋大海    时间: 2013-12-24 20:35
恩恩 发表于 2013-12-24 20:30
呵呵,为啥这么说啊,嘻嘻。

总是看到你呀。
作者: 绕世界流浪丶    时间: 2013-12-24 20:45
  1. import java.io.*;
  2. class FileDemo
  3. {
  4.     public static void main(String[] args)
  5.     {
  6.         listRootsDemo();
  7.     }
  8.     public static void listDemo()
  9.     {
  10.         File f = new File("c:\\");
  11.         String[] names = f.list();
  12.         for(String name : names)
  13.         {
  14.             System.out.print(name)
  15.         }
  16.     }
  17.     public static void listRootsDemo()
  18.     {
  19.         File[] = new File.listRoots();
  20.         for(File f : files)
  21.         {
  22.             System.out.println(f);
  23.         }
  24.     }
  25. }
复制代码

File[] f= new File.listRoots();
f啊 因为你高级for中的对象名就是f
所以你new的时候也肯定是f
作者: 恩恩    时间: 2013-12-24 20:46
汪洋大海 发表于 2013-12-24 20:35
总是看到你呀。

呵呵,还可以吧,没有你说的那么夸张吧。




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