Java for循环语法:“for(T obj:objects)” [英] Java for loop syntax: "for (T obj : objects)"

查看:242
本文介绍了Java for循环语法:“for(T obj:objects)”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一些我从未见过的Java语法。


$ b $ pre $ for(ObjectType objectName:collectionName.getObjects())$ b我想知道是否有人可以告诉我这里发生了什么事情。 $ b


解决方案

它被称为 for-each 为语句增强了请参阅 JLS§ 14.14.2



这是编译器提供的语法糖 ,用于迭代 Iterable s和数组。以下是对列表进行迭代的等效方法:

  List< Foo> foos = ...; $(foo:foos)

{
foo.bar();
}

//相当于:
List< Foo> foos = ...;
for(Iterator< Foo> iter = foos.iterator(); iter.hasNext();)
{
Foo foo = iter.next();
foo.bar();





$ p

这些是迭代数组的两种等价方法:

  int [] nums = ...; 
for(int num:nums)
{
System.out.println(num);
}

//相当于:
int [] nums = ...;
for(int i = 0; i< nums.length; i ++)
{
int num = nums [i];
System.out.println(num);




$ b

进一步阅读




I came across some Java syntax that I haven't seen before. I was wondering if someone could tell me what's going on here.

for (ObjectType objectName : collectionName.getObjects())

解决方案

It's called a for-each or enhanced for statement. See the JLS §14.14.2.

It's syntactic sugar provided by the compiler for iterating over Iterables and arrays. The following are equivalent ways to iterate over a list:

List<Foo> foos = ...;
for (Foo foo : foos)
{
    foo.bar();
}

// equivalent to:
List<Foo> foos = ...;
for (Iterator<Foo> iter = foos.iterator(); iter.hasNext();)
{
    Foo foo = iter.next();
    foo.bar();
}

and these are two equivalent ways to iterate over an array:

int[] nums = ...;
for (int num : nums)
{
    System.out.println(num);
}

// equivalent to:
int[] nums = ...;
for (int i=0; i<nums.length; i++)
{
    int num = nums[i];
    System.out.println(num);
}

Further reading

这篇关于Java for循环语法:“for(T obj:objects)”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆