黑马程序员技术交流社区

标题: 高级for循环 [打印本页]

作者: 李晓斌    时间: 2011-12-22 18:05
标题: 高级for循环
本帖最后由 李晓斌 于 2011-12-23 09:49 编辑

高级for循环不是太懂,能把原理解释一下嘛。
File dir = new File("d:\\java\\day20");
for(String name:str)
                {
                        System.out.println(name);
                }
另外,像上面代码中定义了局部变量name,这样的话,外部就不能调用该变量了,该如何处理呢?还有高级for循环怎么转换成普通的for循环呢?求教
作者: 陈帅雷    时间: 2011-12-22 18:13
本帖最后由 陈帅雷 于 2011-12-22 18:16 编辑

语法:
   for ( type 变量名:集合变量名 )  { … }
注意事项:
   迭代变量必须在( )中定义!
   集合变量可以是数组或实现了Iterable接口的集合类

for(String name:str)
                {
                        System.out.println(name);
                }
如果str为字符数组的话,转化为普通for循环
for(int i=0; i<str.size(); i++)
{
       System.out.println(str);
}

作者: 杨旭    时间: 2011-12-22 18:21
本帖最后由 杨旭 于 2011-12-22 18:29 编辑
  1. public class Text01{
  2.         public static void main(String[] args) {
  3.                 String []str = new String[]{"zxx","lhm","flx"};
  4.                 //普通循环
  5.                 for (int i = 0; i < str.length; i++) {
  6.                         String name = str[i];
  7.                         System.out.println(name);
  8.                 }
  9.                
  10.                 //增强for循环
  11.                 for(String name:str){
  12.                 System.out.println(name);
  13.         }
  14.                
  15.         }
  16. }
复制代码
  1. public class Text02{
  2.         public static void main(String[] args) {

  3.                   List<String> list = new ArrayList<String>();
  4.                   list.add("zxx");
  5.                   list.add("lhm");
  6.                   list.add("flx");
  7.                   
  8. //                    根据集合类长度遍历
  9.                   for(int i=0;i<list.size();i++){
  10.                    System.out.println(list.get(i));
  11.                   }
  12.                   
  13. //                   根据迭代器遍历
  14.                   for(Iterator i = list.iterator();i.hasNext();){
  15.                    System.out.println(i.next());
  16.                   }
  17.                   
  18. //                   根据增强for循环遍历
  19.                   for(String element : list){
  20.                    System.out.println(element);
  21.                  }
  22.         }
  23. }
复制代码

作者: 黑马巩伟伟    时间: 2011-12-22 18:53
这是JAVA1.5 增强的for 循环的新特性。。(enhanced for loop)
所谓“增强的for 循环”,主要也是针对容器的。使用该项特性时,开发者可以将“利用iterator
遍历容器”的逻辑交给编译器来处理。例如下列代码:
void cancelAll(Collection c) {
for (Iterator i = c.iterator(); i.hasNext(); ) {
TimerTask tt = (TimerTask) i.next();
tt.cancel();
}
}
可以用增强的for 循环改写为:
void cancelAll(Collection c) {
for (Object o : c)
((TimerTask)o).close();
}

作者: 黑马巩伟伟    时间: 2011-12-22 18:56
既然是局部变量,那当然是只能在规定的范围内使用。所谓局部变量就是在一个方法内定义供该方法使用的变量,自然外部是访问不到的,如果非要外部访问,不防把它定义为全局的。
作者: 王昌盛    时间: 2011-12-22 20:18
for(String name:str)
                {
                        System.out.println(name);
                }
相当于 普通for循环
for(int i = 0;i<str.length;i++){
        String name = str[i];
        System.out.println(name);
高级for循环中定义的变量,外部不能使用,循环结束便成了垃圾
}
作者: 刘旭    时间: 2011-12-22 21:19
int []a={4,3,5,7};
for(int x:a)      //定义一个int x的变量,用以存放从a中取出的int型数据。当循环时,依次从a中取出数据,赋值给x,然后再打印
                {
                        System.out.println(x);
                }
作者: lucky_xingxing    时间: 2011-12-22 21:27
这种for循环是专门用来迭代 集合和数组的




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