Kotlin 逻辑控制
程序的逻辑控制
if条件语句
Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | fun largerNumber(num1: Int, num2: Int): Int { var value = 0 if (num1 > num2) { value = num1 } else { value = num2 } return value } //Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的, // 返回值就是if语句每一个条件中最后一行代码的返回值。因此,上述代码就可以简化成如下形式: fun largerNumber2(num1: Int, num2: Int): Int { val value = if (num1 > num2) { num1 } else { num2 } return value } //if语句使用每个条件的最后一行代码作为返回值,并将返回值赋值给了value变量。 // 由于现在没有重新赋值的情况了,因此可以使用val关键字来声明value变量,最终将value变量返回。 //仔细观察上述代码,会发现value其实也是一个多余的变量,可以直接将if语句返回,这样代码将会变得更加精简,如下所示: fun largerNumber3(num1: Int, num2: Int): Int { return if (num1 > num2) { num1 } else { num2 } } //当一个函数只有一行代码时,可以省略函数体部分,直接将这一行代码使用等号串连在函数定义的尾部。 // 虽然上述代码中的largerNumber()函数不止只有一行代码,但是它和只有一行代码的作用是相同的, // 只是返回了一下if语句的返回值而已,符合该语法糖的使用条件。那么我们就可以将代码进一步精简: fun largerNumber4(num1: Int, num2: Int) = if (num1 > num2) { num1 } else { num2 } //还可以将上述代码再精简一下,直接压缩成一行代码: fun largerNumber5(num1: Int, num2: Int) = if (num1 > num2) num1 else num2 |
when条件语句
Kotlin中的when语句有点类似于Java中的switch语句,但它又远比switch语句强大得多。
when语句和if语句一样,也是可以有返回值的,因此我们仍然可以使用单行代码函数的语法糖。when语句允许传入一个任意类型的参数,然后可以在when的结构体中定义一系列的条件,格式是:
1 | 匹配值 -> { 执行逻辑 } |
当执行逻辑只有一行代码时,{ }可以省略。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | //if语句实现 fun getScore(name: String) = if (name == "Tom" ) { 86 } else if (name == "Jim" ) { 77 } else { 0 } //使用when语句的时候,现在我们将代码改成如下写法: fun getScore2(name: String) = when (name) { "Tom" -> 86 "Jim" -> 77 else -> 0 } //除了精确匹配之外,when语句还允许进行类型匹配 fun checkNumber(num: Number) { when (num) { is Int -> println( "number is Int" ) is Double -> println( "number is Double" ) else -> println( "number not support" ) } } //is关键字就是类型匹配的核心,它相当于Java中的instanceof关键字。 //when语句还有一种不带参数的用法,虽然这种用法可能不太常用,但有的时候却能发挥很强的扩展性。 fun getScore3(name: String) = when { name == "Tom" -> 86 name == "Jim" -> 77 else -> 0 } //Kotlin中判断字符串或对象是否相等可以直接使用==关键字,而不用像Java那样调用equals()方法。 //可能会觉得这种无参数的when语句写起来比较冗余,但有些场景必须使用这种写法才能实现。举个例子 fun getScore4(name: String) = when { name.startsWith( "Tom" ) -> 86 name == "Jim" -> 77 else -> 0 } |
循环语句
Kotlin也提供了while循环和for循环,其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别
Kotlin在for循环方面做了很大幅度的修改,Java中最常用的for-i循环在Kotlin中直接被舍弃了,而Java中另一种for-each循环则被Kotlin进行了大幅度的加强,变成了for-in循环
1 2 3 4 5 6 7 8 9 10 11 12 | // 两端都是闭区间 val range = 0 .. 10 // 左闭右开的区间 val range2 = 0 until 10 // step关键字 设置步长 val range3 = 0 until 10 step 2 // downTo关键字 降序的区间 val range4 = 10 downTo 1 for (i in range) { println(i) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-01-13 MySQL MyISAM表锁
2021-01-13 MySQL锁概述
2019-01-13 springboot集成mybatis
2019-01-13 idea搭建springboot
2017-01-13 mui 对话框 点击按钮不关闭对话框的办法
2017-01-13 CSS 背景(css background)