突然老师说要考foreach,我本以为foreach只在C#中才有!能否告知一下,这个关键字的用法。最好拿位好心人给个简单易懂的例子。

解决方案 »

  1.   

    jdk1.5新加的功能,做叠代用的
      

  2.   

    for (Object objectname : preArrayList(一个Object对象的列表)) {
      

  3.   

    以下内容来源于网络....
    ------------------------
    package com.kuaff.jdk5; import java.util.*;import java.util.Collection;  public class Foreach{    private Collection c = null;    private String[] belle = new String[4];    public Foreach()    {        belle[0] = "西施";        belle[1] = "王昭君";        belle[2] = "貂禅";        belle[3] = "杨贵妃";        c = Arrays.asList(belle);    }    public void testCollection()    {        for (String b : c)        {              System.out.println("曾经的风化绝代:" + b);        }    }    public void testArray()    {        for (String b : belle)        {              System.out.println("曾经的青史留名:" + b);        }    }    public static void main(String[] args)    {        Foreach each = new Foreach();        each.testCollection();        each.testArray();    }}
     对于集合类型和数组类型的,我们都可以通过foreach语法来访问它。上面的例子中,以前我们要依次访问数组,挺麻烦:for (int i = 0; i < belle.length; i++){        String b = belle[i];        System.out.println("曾经的风化绝代:" + b);}
     现在只需下面简单的语句即可:for (String b : belle){       System.out.println("曾经的青史留名:" + b); }
     对集合的访问效果更明显。以前我们访问集合的代码:for (Iterator it = c.iterator(); it.hasNext();){        String name = (String) it.next();        System.out.println("曾经的风化绝代:" + name);}
     现在我们只需下面的语句:for (String b : c){        System.out.println("曾经的风化绝代:" + b);}
      Foreach也不是万能的,它也有以下的缺点:在以前的代码中,我们可以通过Iterator执行remove操作。for (Iterator it = c.iterator(); it.hasNext();){       itremove()} 但是,在现在的foreach版中,我们无法删除集合包含的对象。你也不能替换对象。同时,你也不能并行的foreach多个集合。所以,在我们编写代码时,还得看情况而使用它。
      

  4.   

    public class Check{
       public static boolean check(Object...objects){
         boolean result=false;
         for(Object obj:objects){
           if((((String)obj).trim().equals(""))
     return result=true;
         } 
         return result;
       }
    }
    上面的程序是检查输入的n个参数是否是由空格组成
    调用的时候可以输入多个参数 
    如:
    boolean pd1=Check.check("string1");
    boolean pd2=Check.check("string1","string2");
    boolean pd3=Check.check("string1","string2","string3");
    都可以
    Object...objects中第一个Object表示行参类型 第2个是行参名 中间三个点是固定写法 大概是表示多个的意思吧 我猜的 HOHO~ ^_^
      

  5.   

    那原来的
    int aa[]=new int[10];
    for (int i = 0; i < aa.length; i++)
    {
      aa[i]=i;
    }
    这样一个数组赋值,用foreach来写,要怎么写呢??
      

  6.   

    int aa[]=new int[10];
    for (int a : aa)
    {
      a=i;
    }
      

  7.   

    foreach 没法访问定位,也就没办法修改,删除 集合中的内容
      

  8.   

    viena(维也纳N02) int aa[]=new int[10];
    for (int a : aa)
    {
      a=i;
    }
    ----------------------------------------------
    i是未定义的,程序不能编译过
      

  9.   

    foreach就只是做输出数组之用,对吗??
      

  10.   

    viena(维也纳N02) 你别误人子弟好么 你打印一下你那程序执行后的数组内容 别照猫画虎
      

  11.   

    楼主我再说一遍!!!
    foreach 没法访问定位,也就没办法修改,删除 集合中的内容
      

  12.   

    楼主如果你还不信你可以执行一下下面的程序 是根据viena(维也纳N02)所想表达的意思写的
    public static void main(String[] args) {
      int aa[]=new int[10];
      int i=0;
      for (int a : aa){
        a=i;
        i++;
      }
      for(int b : aa){
          System.out.println(b);
      }
    }
    结果会告诉你一切
      

  13.   

    忍不住了,viena 你真笨···
      

  14.   

    不错,好久不用foreach了 ,谢啦