前言:
流程控制语句都是很清楚的,这里就介绍foreach语法:一种更加简洁的for语法,用于数组和容器,不需要在创建int变量对由访问项构成的序列进行技术,foreach将自动的产生每一项。
我们来看这个例子:(有一个float数组,我们需要选取数组中的每一个元素,输出)
import java.util.*;
public class ForEach {
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);
}
}
输出如下:
上面代码中使用java.util.Random类,没有用java.lang.Math.random()方法,因为后者使用范围比较小,前者完全可以取代。其中java.util.Random类用法很多,这里使用了种子47(可以是任何数字),如果是Random rand = new Random(),那么就默认系统时间毫秒作为种子,这里的种子并没有起到直接的作用。但是如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
至于其中使用到的random类的方法的语法及其作用,可以查看这个博主的博客:https://blog.csdn.net/weixin_41050155/article/details/79814304
上面的例子中,生成了float的数组,然后用foreach语法返回每个元素,我们可以看到语法是:for(float x:f),将f数组中的元素赋值给x。所以我们可以看到,任何返回一个数组的方法都可以用到foreach,例如:
import java.util.*;
public class ForEach {
public static void main(String[]args) {
for(char c:"I am a boss".toCharArray())
System.out.print(c+" ");
}
}
输出就是:
上面例子中的toCharArray()方法就是返回char数组
而对于一些需要像for(int i=0;i<100;i++)这类的代码在整型数组中步进的情况,foreach就不适用,因为我们首先要有数组或者容器。这里给出一个可以自动生成数组的range方法,它其实是生成器一个很简单的版本,在java和Python中都有应用,也可以自己覆盖这个方法。可以看这个大佬博客了解一下:https://www.jianshu.com/p/d81cbe674841
后记:
感觉在流程控制语句这里还是很熟悉的,毕竟很多东西都和C语言C++一样,如有误,请指出,谢谢。