Java for循环是什么意思?

Java for循环是什么意思?,java,Java,我正在读一段java代码,它有一个for循环 for (PoolStaff staff : staffList) 我从未见过这样的前循环。我习惯于看到int I=0,这是一个ForEach循环。基本上,它在集合的所有元素上进行迭代。这称为增强的for循环或for-each循环。这意味着对于列表中的每个项目,给它一个临时名称,并对其进行处理 如果列表是一个原语数组,比如int[],那么命名变量就是一个副本。对副本所做的任何更改都不会反映在原始列表中。例如: int[] myArray = {1,

我正在读一段java代码,它有一个for循环

for (PoolStaff staff : staffList)

我从未见过这样的前循环。我习惯于看到int I=0,这是一个ForEach循环。基本上,它在集合的所有元素上进行迭代。

这称为增强的for循环或for-each循环。这意味着对于列表中的每个项目,给它一个临时名称,并对其进行处理

如果列表是一个原语数组,比如int[],那么命名变量就是一个副本。对副本所做的任何更改都不会反映在原始列表中。例如:

int[] myArray = {1, 2, 3};
for(int i: myArray) {
   i = i + 1;
}
System.out.println(Arrays.toString(myArray)); // This prints 1, 2, 3!
Person[] myArray = {new Person("Alice", 23),
                    new Person("Bob", 20), 
                    new Person("Charlie", 25)};
for(Person person: myArray) {
   person.age = 30;
}
// Now every person in my list is 30 years old
如果列表是一个对象数组,如问题中的staffList,则命名变量是对原始对象的引用,对命名对象的任何更改都将反映在原始列表中。例如:

int[] myArray = {1, 2, 3};
for(int i: myArray) {
   i = i + 1;
}
System.out.println(Arrays.toString(myArray)); // This prints 1, 2, 3!
Person[] myArray = {new Person("Alice", 23),
                    new Person("Bob", 20), 
                    new Person("Charlie", 25)};
for(Person person: myArray) {
   person.age = 30;
}
// Now every person in my list is 30 years old

您可以从官方来源获得有关每个循环的更多信息。

我更愿意说从名为staff的变量引用它。@Sotirios实际上并非所有情况下都是这样。如果for-each循环在基本数组(如int[])上迭代,则新变量不是引用而是副本。但是我也不是完全正确的,所以我会更新我的答案。@johnnice强调了基本类型数组。包括我在内的很多人都会掩盖这个细节。通常我不会回答这种问题,但见鬼,我印象深刻它被称为foreach循环或增强for循环。它用于在只读模式下迭代集合/数组,而无需知道其大小。公平地说,对于底层投票者来说,用谷歌搜索像这样的东西是非常困难的,因为这些东西是由特殊字符区分的,不能用谷歌搜索。你必须知道这叫做增强型for循环,否则就不是初学者