最近在看《java核心思想》时看到了如下语句:
...
Person [ ] people =new Person [2];
people [0] =new Employee(...);
people [1] =new Student(...);
for(Person p:people)
System.out.prinltn(p.getName()+","+p.getDescripton());
...
对其中的:
for(Person p:people)
System.out.prinltn(p.getName()+","+p.getDescripton());
感到很迷惑,for语句的格式不是这样的啊?通常的for语句应该是:
for(int i=0;i<people.length;i++)
{
System.out.prinltn(people[i].getName()+","+people[i].getDescripton());
}
google、百度了一番,终于了解了。
其实for(Person p:people)是java5.0新增的foreach的语法(强化的for循环)。
使用格式为:
for(type element:array)
{
...
}
式中,type为数组array的类型;element是用来存放数组中元素的临时变量;array是待操作的数组。
作用是:
对数组中的数据依次进行存取。比如上面的代码中,代码的功能是:每次从数组people中取出元素people[i],并自动设定给p,不用判断是否超出了数组的长度。
为了帮助理解,这里举一个简单的例子。
例:
int[] a={1,2,3,4,5,6};
for(int e:a) //依次取出数组a中的元素赋给变量e
{
System.out.println(e); //输出e
}
输出结果:
1
2
3
4
5
6
这种结构的for语句有个优点:
每次从数组array中取数据,会自动赋给变量element,并且不用编译器判断是否超出了数组的长度。也即省去了标准for语句里的判决条件,如”i<=array.length“。