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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.*;
  2. class SystemDemo
  3.                
  4.                 {
  5.                         public static void main(String[] args)
  6.                         {
  7.                                 Properties prop=System.getProperties();
  8.                                 //Properties 是HashTable的子类,也就是Map集合的子类对象,可用Map集合方法取出集合中的元素
  9.                                 [color=Red]for (Object obj:prop.keySet())[/color]//不明白这个写法是什么意思
  10.                                 {
  11.                                         String value=(String)prop.get(obj);//获取值,并强转成String型
  12.                                         System.out.println(obj+"::"+value);//打印键和值
  13.                                 }
  14.                         }

  15.                 }
复制代码

昨天在毕老师视频中看到这段代码,我知道for循环是用来打印出集合中的键和值,但是for(Object obj:prop.keySet())这个写法以前没有见过,请问是什么意思呢?

评分

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

查看全部评分

6 个回复

倒序浏览
java中分为普通for循环和高级for循环,其实这就是高级for循环的写法,高级for循环使得代码变得短小而精炼,一般在集合遍历的时候使用高级for循环   for(Object obj:prop.keySet())意思是
for(int i=0; i<prop.keySet().size(); i++)
{
       Object obj = args.get(i);
}

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
1. 这是增强型for循环
2. 新的for循环。
        格式:for(元素类型 变量名:Collection集合or数组)
                {
                        执行语句;       
                }

3. 传统for和foreach的区别?
        foreach循环必须有被遍历的目标,要么是Collection,要么是数组。

        建议遍历数组是,用传统for循环,因为可以对数组的角标进行操作。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 霍振鹏 于 2014-3-25 12:10 编辑

prop.keySet()的意思是吧prop中的键值对中的键取出来,存入一个Set集合,而Set集合时一个实现了Iterable接口的,所以凡是Set 接口的子类,都可以用迭代器进行迭代,
For(Object obj:prop.keySet())就是用obj去迭代prop.keySet()中的每个元素,下面是 java语言规范中的
C:\Users\hupzhenpeng\Desktop\5.png
这意思就是说,冒号后面的表达式要么是实现了Iterable接口的要么就是个数组,才可以这么用。

5.png (28.04 KB, 下载次数: 20)

5.png

评分

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

查看全部评分

回复 使用道具 举报
图片上传不上去  这是一张从java语言规范中的截图,,你看看

5.png (28.04 KB, 下载次数: 19)

5.png
回复 使用道具 举报
这是java中for的foreach语法,用来遍历数组用的,具体格式:for(类型名 类型变量:数组名)等价于for(int i=0;i<数组长度;i++){
类型名 类型变量=数组名[i];

}
回复 使用道具 举报
那个不是foreach  for的增强版么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马