if
Kotlin 中 if 语句相比于 Java 有一个额外功能,它是可以有返回值的,返回值就是 if 语句每一个条件中最后一行代码的返回值。例如下面函数的作用是返回较大的一个数
fun largeNumber(num1:Int,num2:Int):Int {
return if(num1>num2){
num1
}else{
num2
}
}
可以简化成
fun largeNumber(num1: Int, num2: Int) = if (num1 > num2) {
num1
} else {
num2
}
或
fun largeNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
when
fun main(args: Array<String>) {
gradeStudent(3)
}
fun gradeStudent(score:Int){
when(score){
10 -> println("满分,棒棒哒")
9 -> println("干的不错")
8 -> println("还可以")
7 -> println("还需努力")
6 -> println("刚好及格")
else -> println("还需要加油鸭")
}
}
when语句除了精确匹配之外还支持类型匹配
fun main() {
checkNumber(5L)
}
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 语句中还有一种不带参数的用法
带参数写法我们可以获得 Tom 分数是66
fun getScore(name: String) = when (name) {
"Tom" -> 66
"Jim" -> 77
else -> 0
}
如果有 Tom 和 Tommy ,不带参数的写法
fun getScore(name: String) = when {
name.startsWith("Tom") -> 66
name == "Jim" -> 77
else -> 0
}
for循环
//声明了一个数组,内容是从1-10
var nums = 1 .. 10
for(num in nums){
println("${num},")
}
我们来算一下1-100的和
//声明了一个数组,内容是从1-100
var nums = 1 .. 100
var result = 0
for(num in nums){
result = result + num
}
println("结果是"+result)
所以我们上面的1-100是闭区间[1,100]
现在定义一个开区间
//[1,10)
var nums = 1 until 10
for(num in nums){
println(num)
}
var nums = 1 .. 16
for(num in nums step 2){
println(num)
}
倒序
var nums = 1 .. 16
var nums2 = nums.reversed()
for(s in nums2){
println(s)
}
还可以打印数字个数
println("总数为:"+nums.count())
..
和 until
关键字都要求区间左端必须小于等于区间的右端,如果想创建一个降序的区间可以使用 downTo
关键字
for(i in 10 downTo 1){
println(i)
}
我们创建了一个[10,1]的闭区间