foreach语法可以不必创建int变量去对由访问项构成的序列进行计数,foreach将自动遍历获得每一项
foreach语法如下
for(变量类型 x : 该变量的序列){
statement
}
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。foreach的语句格式:for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句;}下面通过两个例子简单例子看看foreach是如何简化编程的。代码如下:
用foreach遍历float数组
public class foreachfloat{
public static void main(string [] args){
random rand = new random(47);
float f[] = new float[10];
for(int i=0;i < 10;i++){
f[i]=rand.nextfloat();
}
for(float x : f)
system.out.println(x);
}
}
输出
0.32454357
.
.
. //共10行
如上例所示
for(float x : f){
这条语句定义了一个名为x的float型变量,而后将每一个值遍历到x
}
任何数组或返回值是数组的方法都可以应用于foreach。
public class foreachstring{
publicn static void main(string [] args){
for(char c : “hello word”.tochararray()){
system.out.print(c+” ”);
}
}
}
输出
h e l l o w o r d
但foreach不能直接对不存在的一组逻辑数字进行遍历,但for却可以
例如 for(int i=0;i < 100;i++)
如果想直接对数字进行遍历需要创建int型的数组,但可以做个静态方法自动根据传入数字来建立数组
例如for(int i : range(10))
这种方法虽然可以使得foreach更通用,但是这种方法会降低计算机效率
/**
* foreach输出二维数组测试
*/
public void testarray2() {
int arr2[][] = {{4, 3}, {1, 2}};
system.out.println("----3----foreach输出二维数组测试");
for (int x[] : arr2) {
for (int e : x) {
system.out.println(e); //逐个输出数组元素的值
}
}
}/**
* foreach输出三维数组
*/
public void testarray3() {
int arr[][][] = {
{{1, 2}, {3, 4}},
{{5, 6}, {7, 8}}
};system.out.println("----4----foreach输出三维数组测试");
for (int[][] a2 : arr) {
for (int[] a1 : a2) {
for (int x : a1) {
system.out.println(x);
}
}
}
}