Java:解释for()循环参数的作用

时间:2011-06-05 04:49:28

标签: java

有人可以解释一下这个课程中的for循环吗?特别是(String person:people)

的部分
import java.util.Scanner;

/**
 * This program uses the startsWith method to search using
 * a partial string
 * 
 *
 */
public class PersonSearch {

public static void main(String[] args){
    String lookUp;  //To hold a lookup string

    //Create an array of names
    String[] people= {"Cutshaw, Will", "Davis, George",
            "Davis, Jenny", "Russert, Phil", 
            "Russel, Cindy", "Setzer, Charles",
            "Smathers, Holly", "Smith, Chris", 
            "Smith, Brad", "Williams, Jean" };

    //Create a Scanner object for keyboard input
    Scanner keyboard=new Scanner(System.in);

    //Get a partial name to search for
    System.out.println("Enter the first few characters of "+
            "the last name to look up: ");
    lookUp=keyboard.nextLine();

    //Display all of the names that begin with the
    //string entered by the user
    System.out.println("Here are the names that match:");
    for(String person : people){
        if (person.startsWith(lookUp))
            System.out.println(person);

    }
}
}

谢谢。

6 个答案:

答案 0 :(得分:7)

它被称为foreach语法。它适用于实现Iterable的数组和对象。

对于数组(如此处),它等同于此代码:

for (int i = 0; i < people.length; i++) {
    person = people[i];
    // code inside loop
}

对于Iterable<T> iterable(例如列表),它等同于:

for (Iterator<T> i = iterable.iterator(); i.hasNext(); ) {
    T next = i.next();
    // code inside loop
}

这种代码模式非常普遍,并且添加的价值很小,这种缩写形式的循环正式成为1.5版本(即“Java 5”)中java语言的一部分。

答案 1 :(得分:2)

这是enhanced for loop。它自Java 5以来一直存在。

答案 2 :(得分:1)

lookUp是一个包含用户输入的字符串变量。

假设用户输入名称“George”,它将包含名称“George”。

people是一系列字符串,比如“Jimmy”,“George”和“John”

For Loop中,检查people数组中的所有字符串,看它们是否以字符串“George”开头。

如果people中的任何名称都以George开头,则会打印出完整的person字符串。

打印的字符串可能包括'George Foreman'或'George Brett'

答案 3 :(得分:1)

这意味着person中每个String(类型people数组中的元素)的行为如下所示。它是java中foreach的语法。

Stackoverflow上的类似问题

  1. How does the java foreach loop work?

答案 4 :(得分:0)

该函数将对集合中的每个人进行字符串比较,以查看person字符串是否以查找字符串开头。例如,如果人是hivie7510并且查找是hivie那么它将是真实的并打印出来。

答案 5 :(得分:0)

在此示例中,for循环遍历people数组。每个实例都存储在一个名为person的变量中。如果查找存储“S”,那么person.startWith(loopup)将检查字符串人是否以S开头。因此,结果将是

塞泽尔,查尔斯 Smathers,Holly
史密斯,克里斯 史密斯,布拉德