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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涐扪①起奮乧 中级黑马   /  2013-11-5 15:53  /  788 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 涐扪①起奮乧 于 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]

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 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()次
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马