Kotlin——程序的基本逻辑结构之选择、循环和跳转基本语法
来源:互联网 发布:螺旋数组 编辑:程序博客网 时间:2024/06/16 16:54
引言
前一篇文章总结了Kotlin的基本数据类型,如果把程序比作一个有机体的话,基本数据只是构成一个躯壳,而没有灵魂的躯壳是意义不大的。同样的如果程序中没有控制逻辑很多情况下这程序是不完整的,因为不可能每一句代码之间都是从上往下逐句去执行,而程序中的灵魂就是我们的要讲的控制逻辑。
一、条件选择结构
Kotlin中条件选择结构主要有两种:if-else if -else 和when。
1、if-else if -else
在Kotlin中if-else if -else条件从句除了拥有Java 中if条件从句的所有功能,用法也大同小异,还有更高级的功能(类似Java中的三元运算符—— 条件 ? 条件值满足时返回的值 : 不满足时返回的值)。在Kotlin中if 是一个表达式,也就意味着他会返回值,且if的分支是还可以是代码块。最后需要注意:如果你使⽤ if 作为表达式⽽不是语句,该表达式必须有 else 分⽀配对。
- 传统用法
if(conditionexp){ ...}else if(conditionexp2){ ...}else{ ...}
- 作为表达式使用,实现三元运算符功能
var a=9var b=80val max = if (a > b) a else bprintln("max"+max)//输出 max 80
- 作为表达式使用,分支使用代码块
var a=9 var b=80 val max = if (a > b) { print("Choose a") a } else { print("Choose b") b } println("max"+max)//输出Choose bmax80
2、when 条件从句
when -else条件从句就相当于升级版的switch-case从句,运行逻辑大同小异。when 也将它的参数(也可以不提供参数)和各分⽀条件顺序⽐较,直到某个分⽀满⾜条件。和if 类似,when的分支条件可以是任意表达式(不只只是常量),不过需要注意的是,。如果when被用做表达式(必须有 else 分⽀), 符合条件的分⽀的值就是整个表达式的值;如果当做语句使⽤, 则忽略个别分⽀的值。(像 if ⼀样,每⼀个分⽀可以是⼀个代码块,它的值是块中最后的表达式的值),最后,如果其他分⽀都不满⾜条件将会求值 else 分⽀。
- 普通用法
when (x) { 1 -> print("x == 1") 2 -> print("x == 2") 3,4 ->print("x == 3 /4") else -> { // 注意这个块 ... } } }
- 使用表达式作为分支条件
when (x) {parseInt(s) -> print("s encodes x")else -> print("s does not encode x")}
- 使用when实现检测某个值是否在某个区间
val x:Int=8 when (x) { in 1..10 -> print("x is in the range") !in 10..20 -> print("x is outside the range") else -> print("none of the above")}
- when不提供参数(相当于if-else if-else功能),所有的分⽀条件都是简单的布尔表达式,⽽当⼀个分⽀的条件为真时则执⾏该分⽀
val x:Int=8 when { x>9 -> print("x >9 ") x<9 -> print("x > 9") else -> print("x is funny")}
二、循环
在Kotlin中循环结构和Java功能一模一样,也拥有三种形式:for、while(condition)、do-while,用法也是一样的,也没有啥特别的。
- for 可以循环遍历任何提供了迭代器的对象,迭代之后可以通过成员函数或者扩展函数 iterator() 获取它的返回类型,也可以通过成员函数或者扩展函数 next() 获取下一个值还可以通过并且成员函数或者扩展函数 hasNext() 判断是否遍历到尽头。
for (item in collection) print(item)
- for循环集合的索引遍历(这种“通过一个范围的迭代”形式在编译的时候会被优化而不会创建额外的对象。)
for (i in array.indices) {print(array[i])}
- 使用withIndex完成遍历(形式在编译的时候会被优化而不会创建额外的对象。)
val asc = Array(5, { i -> (i * i).toString() }) //index,value为关键字 for ((index, value) in asc.withIndex()) { println("the element at $index is $value") }
- while和do-while
while (x > 0) {x--}do {val y = retrieveData()} while (y != null) // y 在此处可⻅
三、跳转结构continue、break和return
continue、break、return结构功能用法和Java中的一样。
- return——默认从最直接包围它的函数或者匿名函数返回。
- break——终⽌当前层次的循环。
- continue——跳出当前当次的循环,继续下⼀次循环
四、标签Label
在Kotlin中任何表达式都可以⽤标签(Label)来标记,使用标识符后跟@符号来定义一个标签(即xxx@,例如:abc@ 、fooBar@ 都是有效的标签),使用@后跟标识符来引用一个标签(@xxx)。其实呢标签就有点类似goto语句的作用,有点像通过外力来改变程序默认的逻辑而运行到定义标签处。
一般来说,标签通常是用于限制continue、break、return的调整,关于标签的更多使用后续再详解。
- Kotlin——程序的基本逻辑结构之选择、循环和跳转基本语法
- Kotlin开发之旅《二》—Kotlin的基本语法
- Kotlin——程序的灵魂组成之变量、属性和函数的基本语法(一)
- Kotlin之基本语法
- Kotlin——基本语法
- 一个Swifter的Kotlin学习——Kotlin 基本语法
- Kotlin——程序的灵魂组成之Lambda表达式、匿名函数、高阶函数的基本语法(二)
- java学习之路 之 基本语法-程序流程控制-循环结构-while循环练习题
- java学习之路 之 基本语法-程序流程控制-循环结构-for 循环练习题
- java学习之路 之 基本语法-程序流程控制-循环结构-嵌套循环练习题
- Kotlin修行之路——基本语法
- Kotlin开篇之基本语法
- 黑马程序员----java的基本语法 变量 运算符 选择结构 循环结构 方法 数组
- Kotlin学习——基本语法
- Kotlin第二章:Kotlin 的基本语法
- Kotlin与Android的奇妙之旅——基本语法(二)
- Kotlin——程序核心构成元素之包、类、接口以及对象基本语法(一)
- Kotlin——程序核心构成元素之包、类、接口以及对象基本语法(二)
- 【Android 工具】ButterKnife集成Android Studio
- Linux Centos7下ZooKeeper集群安装详细步骤
- Oracle创建表空间及用户
- 【Linux 虚拟机】关于如何设置虚拟机网络问题1
- shell入门:脚本里那些奇奇怪怪的写法
- Kotlin——程序的基本逻辑结构之选择、循环和跳转基本语法
- 第九章 文件、文件系统压缩与打包 PS:完整备份工具没看
- Python黑魔法之描述符
- android 用action拦截打电话界面
- CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree
- Freemaker
- 无缝轮播demo
- 函数的调度与优化
- 关键字extern,static,const的区别及特点