今天说说Kotlin中的循环迭代的内容。
我们这里还是对比Java来学习Kotlin中的循环迭代的写法。
Java中的循环
Java中的循环主要包括while()、do{}while()、for和foreach这几种方式,放上代码简单复习一下,便于与后面的Kotlin代码对比。
Java代码
public class JavaLoop { public static void main(String[] args) { int[] data = {1, 2, 3, 4, 5, 6}; //while循环 int index = 0; int len = data.length; while (index < len){ System.out.println(data[index++]); } //do...while循环 int sum = 0; do{ System.out.println(sum); sum += 1; }while (sum < 100); //for循环 for (int i = 0; i < len; i++){ System.out.println(data[i]); } //foreach循环 for(int da : data){ System.out.println(da); } }}复制代码
上面的只是通过简单的代码复习了下Java中循环的写法,下面关键看看Kotlin中的循环。
Kotlin中的循环
Kotlin中的while循环和do...while循环与Java中的写法是一样的,这里不再重复,我们只要说说Kotlin的新特性。 在Kotlin中没有一般意义的for循环结构,就想下面这种。
//for循环for (int i = 0; i < len; i++){ System.out.println(data[i]);}复制代码
这种结构在Kotlin中是没有的,Kotlin中引入了一个新的概念区间
。其实这个概念我们在数学中是学过的。 在Kotlin中使用m..n
这种形式来表示一个m到n的闭区间,然后又使用in
来表示每次从区间里面取一个值,放上代码。
Kotlin代码
fun main(args: Array){ for (i in 1..100){ print(i) }}复制代码
上面的代码打印出1-100之间的数字,包括1和100。 当然你可能还想每次不是递增1,那就设置step
步长好了,如下打印出1-100之间的所有奇数。
fun main(args: Array){ for (i in 1..100 step 2){ print(i) }}复制代码
你可能还想倒着输出1-100之间的所有数,那也可以。
for (i in 100 downTo 1 step 1){ print(i);}复制代码
100 downTo 1
表示从100减小到1,step
仍然表示步长。 当然for循环不止可以迭代数字,我们知道在Java中可以使用循环输出连续的字符,这其实是利用了ASCII码来做到的,就像下这样。
Java代码
for (char i = 'A'; i <= 'Z'; i++){ System.out.print(i);}复制代码
在Kotlin中我们不但可以写一个数字区间,也可以写一个字符区间,实现与上面的Java代码一样的功能,就像下面一样。
for(c in 'A'..'Z'){ print(c)}复制代码
写在最后
是不是发现Kotlin中的循环更加简洁,而且语意更加清晰,而且Kotlin的for循环可以实现一般的for循环的所有功能。