Java for loop syntax: “for (T obj : objects)”

2022-08-31 20:48:14

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

for (ObjectType objectName : collectionName.getObjects())

答案 1

它称为 for-eachenhanced for 语句。请参阅 JLS §14.14.2

它是编译器提供的语法糖,用于迭代迭代迭代的 s 和数组。以下是循环访问列表的等效方法:

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

进一步阅读


答案 2

变量 objectSummary 保存从 objectListing.getObjectSummary() 返回的 S3ObjectSummary 类型的当前对象,并循环访问集合。

下面是 Java 教程中此增强的 for 循环的示例

class EnhancedForDemo {
 public static void main(String[] args){
      int[] numbers = {1,2,3,4,5,6,7,8,9,10};
      for (int item : numbers) {
        System.out.println("Count is: " + item);
      }
 }
}

在此示例中,变量项保存数字数组中的当前值。

输出如下:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

希望这有帮助!