今天看到一段代码,功能是打印所有时区:
for(String s : TimeZone.getAvailableIDs()) {
System.out.println(s);
}我感到奇怪的是这个语法,怎么中间是冒号,跟传统的for( ; ; )中间两个逗号不一样.
请大家为我解释一下这种语法现象,有什么用途.
for(String s : TimeZone.getAvailableIDs()) {
System.out.println(s);
}我感到奇怪的是这个语法,怎么中间是冒号,跟传统的for( ; ; )中间两个逗号不一样.
请大家为我解释一下这种语法现象,有什么用途.
可以上网搜一下 增强的for 循环,看看就明白啦冒号前String s 跟你在 for( ; ; ) { String s } 一样 冒号后 是一个数组,表示要从该数组中循环出你要的数据
这个是java中foreach的写法
String 表示进行循环迭代的变量类型
s 表示变量名
:相当于C#中foreach的in 操作符
TimeZone.getAvailableIDs() 应该是一个String数组
这个写法的意思是将TimeZone.getAvailableIDs()数组中的项每次拿给一个赋给变量s
PS:需要注意的是s只是一个变量名,所以不一定要写s可以是任何符合变量命名的东西。比如str i j k....
{
// do something with s;
}Equivalent to:for (int i=0; i<a.size();i++)
{
s=a.get(i); //so something with s;
}
如
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);
}
两者那个好用,很明显吧^^
是为了 配合 集合的枚举接口
只要实现了 枚举接口的对象就可以这样访问这样可以 避免 只能使用索引来访问集合