Kotlin语法基础之控制流
Kotlin 的控制流与 Java 的控制流基本相同,只是使用 when 代替了 switch。当然,在 Kotlin中,if 和 when 不仅仅可以作为语句使用,还可以作为表达式使用,这些内容会在本节详细讲解。
条件语句
在 Kotlin 中,if 语句本身就是表达式,有返回值,因此,Kotlin 并不需要像 Java 那样提供三元操作符(condition ?then: else)。下面是传统的 if 条件语句的用法。
var a:Int = 20
var b = 30
var max: Int
if (a < b) max = b
var min: Int
if (a > b) {
min = a
} else {
min = b
}
如果想将 if 语句作为表达式使用,那么可以按下面的代码形式编写 if 语句。如果 if 或 else后面是代码块,那么最后一个表达式是返回值。
var a = 20
var b = 30
val max = if (a > b) a else b
println(max)
// if else 后面是一个代码块,最后一个表达式将作为返回值
val min = if (a > b) {
print("Choose a")
a // 返回值
} else {
print("Choose b")
b // 返回值
}
when 语句
在 Kotlin 中,when 替换了 C 语言风格的 switch 语句。标准的 when 语句的用法如下:
var x = 1
when (x)
{
1 -> {
println("x == 1")
println("hello world")
}
2 -> print("x == 2")
else -> {
print("x is neither 1 nor 2")
}
}
使用 when 语句时,应注意以下几点:
- when 语句会根据传入的值(这里是 x)寻找第一个满足条件的分支,找到后执行分支的语句。
- 如果分支中多于一条语句,要用{…}。
- 满足条件的分支执行后,会自动终止 when 语句的执行,因此,并不需要像 switch 语句那样每一个 case 语句都加上 break。
when 与 if 一样,既可以作为语句使用,也可以作为表达式使用。如果是后者,when 语句的第一个满足条件的分支的最后一个表达式就是 when 表达式的返回值。
var x = 1
var m = when (x) {
1 -> {
println("x == 1")
20
}
2 -> {
print("x == 2")
60
}
else -> {
print("x is neither 1 nor 2")
40
}
}
println(m) // m 的值是 20
如果多个分支条件执行的代码都一样,可以在一个分支用逗号(,)分隔多个条件,代码如下:
var x = 1
when (x) {
1,2 -> {
println("已经符合条件")
}
3 -> {
println("不符合条件")
}
else -> {
println("条件未知")
}
}
如果要执行相同代码的条件比较多,或无法枚举,可以使用 in 关键字确定一个范围,代码如下:
var n = 25
when(n)
{
in 1..10 ->println("满足条件")
in 11.. 20 ->println("不满足条件")
!in 30..60 ->println("hello world") // !in 表示不在这个范围内
else->println("条件未知")
}
其实,when 中的分支条件不仅可以是常量,还可以是任意表达式。例如,下面的代码分支条件就是一个函数。
fun getValue(x:Int):Int
{
return x * x
}
fun main(args: Array<String>)
{
var n = 4
when(n)
{
getValue(2)->println("满足条件")
getValue(3)->println("不满足条件")
else->println("条件未知")
}
}
for 循环
在 Kotlin 中,for 循环可以直接枚举集合中的元素,也可以按集合索引来枚举元素。下面的语法是使用迭代器(iterator)枚举集合中的所有元素。
for (item in collection) print(item)
下面的代码使用这种方式枚举了数组中的所有元素值。
var arr = intArrayOf(2,4,6,8,10)
for (item: Int in arr) {
println(item)
}
下面的代码使用索引枚举数组中的元素值。
var arr = intArrayOf(2, 4, 6, 8, 10)
for (i in arr.indices) {
println("arr[$i] = " + arr[i])
}
执行这段代码,会输出如下结果。
arr[0] = 2
arr[1] = 4
arr[2] = 6
arr[3] = 8
arr[4] = 10
其实要想输出上面的结果,还有更简单的写法,就是在循环时,同时对索引和元素值进行 循环,代码如下:
var arr = intArrayOf(2, 4, 6, 8, 10)
// index 是索引,value 是当前的数组元素值
for ((index, value) in arr.withIndex()) {
println("arr[$index] = " + value)
}
while 循环
Kotlin 中的 while 循环和 Java 中的 while 循环是一样的,也分为 while 和 do…while,代码如下:
var i= 0
while(i++ < 10){
println(i)
}
do{
if(i == 6)
continue
println(i)
if(i == 5)
break
}while(--i > 0)
do…while 循环中使用了 continue 和 break,这两个语句在 for 循环中同样可以使用。continue 是为了忽略当前循环 continue 后面的所有语句,继续从下一次循环开始。break 是为了终结当前循环,并跳出循环。这一点和 Java 完全一样。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP实现SMTP邮件的发送实例
- 多个Laravel项目如何共用migrations详解
- PHP实现文字写入图片功能
- php中file_get_contents()函数用法实例
- PHP通过GD库实现验证码功能示例
- Thinkphp 5.0实现微信企业付款到零钱
- 使用npy转image图像并保存的实例
- php实现有序数组旋转后寻找最小值方法
- 基于python实现音乐播放器代码实例
- PHP实现微信对账单处理
- Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
- PHP Include文件实例讲解
- ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
- Python Switch Case三种实现方法代码实例
- PHP正则表达式笔记与实例详解