【Kotlin】学习笔记(一)变量、函数与逻辑控制

一、变量

1.定义方法

在Kotlin中,我们使用关键字valvar来声明一个变(常)量。

val: 声明一个常量,相当于java中的final变量,无法二次赋值
var: 声明一个变量

用例:

1
2
val a = 114
var b = 5.14

Kotlin具备优秀的类型推导能力,它会将a的类型推导为Int,并将b的类型推导为Double。

2.变量类型

例:

1
2
val a : Int = 114514 //正确
val b : Int = 1919.810 //报错

Kotlin部分的对象数据类型如下:

类型对象 名称
Int 整形
Long 长整型
Short 短整型
Float 单精度浮点型
Double 双精度浮点型
Boolean 布尔型
Char 字符型
Byte 字节型
Number 数值型
String 字符串型

二、函数

1.基本定义

1
2
3
fun 函数名(参数a: 类型a,参数b: 类型b): 返回值类型 {
return ...
}

特别地,当函数中只有一行代码时,可以不写花括号 {},而使用 = 进行简化。如:

1
fun largeNumber(num1: Int, num2: Int): Int = max(num1, num2)

在这种写法下,还能省去返回值类型的声明:

1
fun largeNumber(num1: Int, num2: Int) = max(num1, num2)

另外,函数中声明的参数默认是可变的,如果想让它不可更改,可以在前面添加关键字val

三、逻辑控制

1.if语句

和大部分语言中的if基本没有区别

1
2
3
4
5
6
7
8
9
10
var a = 5
var b = 4
if (a > b) {
a = b
} else if (b > a){
b = a
} else {
a = 9
b = 9
}

但在Kotlin中,if语句还有别的功能: 具有返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fun largerNumber(num1: Int, num2: Int): Int {
val value = if (num1 > num2) { num1 } else { num2 }
return value
}

//继续简化:
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) {
num1
} else {
num2
}

//再简化:
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2

2.when语句

when语句类似Java中的switch,但更加完善、简洁

1
2
3
4
5
6
7
8
fun getScore(name: String) = when(name) {
"Tom" -> 86
"Jim" -> 77
"Jack" -> 95
else -> {
println("Error")
}
}

另外,可以不在when中传入参数:

1
2
3
4
5
6
7
8
fun getScore(name: String) = when {
name == "Tom" -> 86 //不需要像Java那样使用 .equal() 对字符串进行判断
name == "Jim" -> 77
name.startWith("Jack") -> 95 //箭头的左边可以换成所有带布尔返回值的表达式
else -> {
println("Error")
}
}

when语句还支持类型匹配:

1
2
3
4
5
6
7
fun checkNumber(num: Number) {
when (num) {
is Int -> println("num is Int")
is Double -> println("num is Double")
else -> println("num not support")
}
}

3.for循环

首先,Kotlin中移除了for-i循环,但加强了for-each循环。还引入了区间的概念。

1
2
3
val range1 = 0..10              //表示[0,10]的整数数组,双端闭区间
val range2 = 0 until 10 //表示[0,10),左闭右开
val range3 = 0 until 10 step 2 //step关键字,设置递增

..until都要符合左端小于等于右端,无法创造递减区间。
如果要创造一个降序区间,要使用关键字 downTo

1
val range4 = 10 downTo 1        //[10,1]的降序区间,双端闭区间

有了区间之后,就可以通过for-in循环来遍历这个区间:

1
2
3
for (i in 0..10) { //在for循环中定义的循环变量无需使用var或val关键字
println(i)
}

4.while循环

Kotlin中的while循环和Java中的没有任何区别:

1
2
3
4
var i = 0
while (i < 10) {
i++
}

另外,do-while循环也一样:

1
2
3
4
5
var i = 0
do{
i++
}while(i < 10)
println(i)

【Kotlin】学习笔记(一)变量、函数与逻辑控制
https://chordfish-k.github.io/2023/02/01/kotlin/kotlin-20230201/
作者
超弦鱼
发布于
2023年2月1日
许可协议