Java中一道怪异的for循环语法问题

young_suse 2008-01-26 11:51:43
今天看到一段代码,功能是打印所有时区:
for(String s : TimeZone.getAvailableIDs()) {
System.out.println(s);
}

我感到奇怪的是这个语法,怎么中间是冒号,跟传统的for( ; ; )中间两个逗号不一样.
请大家为我解释一下这种语法现象,有什么用途.
...全文
741 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
woami66 2009-08-10
  • 打赏
  • 举报
回复
我赞成5楼的观点,这种做法,不是很可取!
KK3K2005 2008-05-18
  • 打赏
  • 举报
回复
FOR( : )
是为了 配合 集合的枚举接口
只要实现了 枚举接口的对象就可以这样访问

这样可以 避免 只能使用索引来访问集合
shi_guang_2008 2008-05-18
  • 打赏
  • 举报
回复
好用不好用,仅仅是个习惯问题,呵呵
flysky 2008-05-18
  • 打赏
  • 举报
回复
JDK5 之后才有的新特性
snowflychen 2008-05-18
  • 打赏
  • 举报
回复
jdk1.5增强的for循环语句啊,据说不是很好用,不知道大家意见如何
young_suse 2008-05-18
  • 打赏
  • 举报
回复
举了这个例子,确实好理解多了!谢谢!
persephonec 2008-03-10
  • 打赏
  • 举报
回复
我觉得这样很好用,因为这不只可以是字串,更可以是一个自定义像user(用户)这样的object

User是自定义的object
users是List<User>变量

for (User user: users) {
System.out.println(user.name);
System.out.println(user.brithday);
}

当然你可也以写成
for (int i=0; i<users.size(); i++) {
User user = users.get(i);
System.out.println(user.name);
System.out.println(user.brithday);
}
两者那个好用,很明显吧^^
xiaoben008 2008-01-27
  • 打赏
  • 举报
回复
jdk新特性
Dragon_sxw 2008-01-27
  • 打赏
  • 举报
回复
这是 JDK5 之后才有的新特性 跟原来的for循环没有什么不一样
可以上网搜一下 增强的for 循环,看看就明白啦

冒号前String s 跟你在 for( ; ; ) { String s } 一样

冒号后 是一个数组,表示要从该数组中循环出你要的数据
newflypig 2008-01-27
  • 打赏
  • 举报
回复
按照3楼的解释,这确实有点方便阿,但是SUN这么作有什么必要呢,难道非要显得java越来越怪异深奥才能让人赞叹吗,算法效率上如果没有优化的话(估计这种简单的循环也不可能存在优化),那我认为这确实没什么必要,反而加大了一部分初学者的代码阅读难度,一家之见……
young_suse 2008-01-27
  • 打赏
  • 举报
回复
谢谢大家的指点了
silverspoonuk 2008-01-27
  • 打赏
  • 举报
回复
for (String s: a)
{
// do something with s;
}

Equivalent to:

for (int i=0; i<a.size();i++)
{
s=a.get(i);

//so something with s;
}
ly8261861 2008-01-27
  • 打赏
  • 举报
回复
for(String s : TimeZone.getAvailableIDs())
这个是java中foreach的写法
String 表示进行循环迭代的变量类型
s 表示变量名
:相当于C#中foreach的in 操作符
TimeZone.getAvailableIDs() 应该是一个String数组
这个写法的意思是将TimeZone.getAvailableIDs()数组中的项每次拿给一个赋给变量s
PS:需要注意的是s只是一个变量名,所以不一定要写s可以是任何符合变量命名的东西。比如str i j k....

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧