黑马程序员技术交流社区

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

作者: 涐扪①起奮乧    时间: 2013-11-5 15:53
标题: 高级for循环咨询
本帖最后由 涐扪①起奮乧 于 2013-11-6 10:51 编辑
  1. import java.util.*;
  2. class CollectionToArray
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList<String> al = new ArrayList<String>();//创建对象
  7.                 al.add("def01");
  8.                 al.add("def03");
  9.                 al.add("def02");
  10.                 al.add("null");
  11.                 al.add("def04");
  12.                 for (String s : al)
  13.                 {
  14.                         s = "QQ";//给s重新赋值
  15.                         sop(al);
  16.                 }
  17.                 sop(al);
  18.         }
  19.         public static void sop(Object obj)
  20.         {
  21.                 System.out.println(obj);
  22.         }
  23. }
复制代码
高级for循环里给s赋值没执行,是因为高级for循环只能获取集合元素,不能对集合中的元素进行修改,增加或者删除。
请问我在for循环里sop(al);结果为:[def01,def03,def02,null,def01]
                                               [def01,def03,def02,null,def01]
                                               [def01,def03,def02,null,def01]
                                               [def01,def03,def02,null,def01]

                                              而不是一行[def01,def03,def02,null,def01]
作者: kuoge110    时间: 2013-11-5 15:59
本帖最后由 kuoge110 于 2013-11-5 16:01 编辑

你这个for循环等价于
  1. for{int i=0;i<a1.size();i++}{
  2. {
  3.                         s = "QQ";//给s重新赋值
  4.                         sop(al);
  5.                
  6. }
  7. 相当于输出了 a1.size()次
复制代码





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