我遇到了一些以前从未见过的Java语法。我想知道是否有人可以告诉我这是怎么回事。

for (ObjectType objectName : collectionName.getObjects())

最佳答案

它被称为 for-每种增强的for语句。 请参阅the JLS §14.14.2

编译器提供的 syntactic sugar 用于迭代 Iterable 和数组。以下是迭代列表的等效方法:

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();
}

这是两种遍历数组的等效方法:
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);
}

进一步阅读
  • How is Java's for loop code generated by the compiler
  • The For-Each Loop
  • 07-24 18:56
    查看更多