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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王舜民 中级黑马   /  2012-7-27 22:23  /  2602 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王舜民 于 2012-7-28 08:34 编辑

import java.io.*;

class FileDemo2
{
        public static void main(String[] args)
        {

                listDemo();
        }
        public static void listDemo()
        {
                File f = new File("c:\\");

                String[] names = f.list();
                forimport java.io.*;

class FileDemo2
{
        public static void main(String[] args)
        {

                listDemo();
        }
        public static void listDemo()
        {
                File f = new File("c:\\");

                String[] names = f.list();
                for(String name : names)   这是什么意思啊?
                {
                        System.out.println(name);
                }
        }
        public static void listRootsDemo()
        {
                File[] files = File.listRoots();
               
                for(File f : files)  // 这是什么意思啊?
                {
                        System.out.println(f);
                }
        }
})
                {
                        System.out.println(name);
                }
        }
        public static void listRootsDemo()
        {
                File[] files = File.listRoots();
               
                for(File f : files)
                {
                        System.out.println(f);
                }
        }
}

9 个回复

正序浏览
一种更加简洁的for语法用于数组和容器,即foreach语法,在遍历过程中不必新构建一个int变量去进行计数,foreach将自动产生每一项,
String[] names = f.list();
                for(String name : names)
意思就是foreach将自动产生names数组中的每一项,并赋值给name,并执行后面的输出操作,

这里要注意的就是name的类型一定不能出错;
回复 使用道具 举报
这个是典型的jdk1.5中加强for循环的应用。用起来很爽的,看完后面的视频你就知道了。
加强for循环内部其实也是用到了迭代器。关于for循环只能遍历,不能修改的说法楼上很对,对此
我写出一个代码,证实下:
public class ForTest{
        public static void main(String[] args) {
                List<String> aList = new ArrayList<String>();
                aList.add("zhangsan");
                aList.add("lisi");
                 
                System.out.println(aList);
                delElements(aList);   //报出异常
                 System.out.println(aList);
        }

        public static void delElements(List<String> aList) {
                for (String str : aList) {
                        if (str.equals("zhangsan")) {
                                aList.remove(str);
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这是一个比较常见的问题呦!!!java循环分为两种:
1、普通的for循环 : for(初始表达式;条件表达式;递增表达式) 比较常用!可以完成对循环执行多次,因为可以控制循环的增量和条件。对数组角标进行操作建议使用传统for.
2、增强for循环:内部是使用的Iterator来遍历的,只能遍历数组和实现了Iterable接口的集合。优点是写法简便,无需获得数组、集合长度,也无需根据索引来访问元素。
缺点是不能在循环里动态的删除元素和获取元素下标。注意: 任何的增强for循环都可以改写为for循环。
希望对你有所帮助!!!{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
黄锐 初级黑马 2012-7-27 23:21:48
7#
这是增强for循环, for(String name : names)  for遍历循环元素,它比普通for循环更方便。
回复 使用道具 举报
这里面的循环应该是java5.0之后出现的foreach循环,foreach的语法是
for(ElementType元素类型 element元素 : arrayName集合(比如list、数组等)) {

};   

根据这个语法可以知道他就是一个循环遍历,举个例子用代码说明吧

例如:
int[] num = { 1, 2, 3, 4 };     
for (int i : num) {   //这个就是遍历循环
    System.out.print(i);     
}

对比下:

for (int i; i < num.length; i++) {    //他俩是一样的
   System.out.print(num);     
}


看看你能明白吗,我的理解就是这样的。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刘同超 发表于 2012-7-27 22:31
就是一个高级for循环。

谢谢你的详细解释!
回复 使用道具 举报
李菁 发表于 2012-7-27 22:25
for(String name : names)   这是什么意思啊?  高级for循环,循环names数组中的元素
                {
   ...

谢谢了!
回复 使用道具 举报
本帖最后由 刘同超 于 2012-7-27 22:34 编辑
  1.   int[] a={1,2,3,4,5,6,7,8,9,10};
  2.                
  3.                 // 每次循环从 a 中取出一个数,赋值给 i 。
  4.                 // 输出 i 得到 a 里的数值。
  5.                 for(int i:a)
  6.                 {
  7.                         System.out.println(i);
  8.                 }
  9.                
  10.                 // 普通for循环
  11.                 for (int i = 0; i < a.length; i++) {
  12.                         System.out.println(a[i]);
  13.                 }
复制代码
就是一个高级for循环。
回复 使用道具 举报
for(String name : names)   这是什么意思啊?  高级for循环,循环names数组中的元素
                {
                        System.out.println(name);
                }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马