变量的声明方式
kotlin中声明变量只允许两种关键字,且自带类型推导
- var 声明变量 值可变
- val 声明常量 值不可变 相当于Java中的final关键字
kotlin
var a: Int = 10
val b = 10
Java和Kotlin数据类型对照表
Java基本数据类型 | Kotlin对象数据类型 | 数据类型说明 |
---|---|---|
int | Int | 整型 |
long | Long | 长整型 |
short | Short | 短整型 |
float | Float | 单精度浮点型 |
double | Double | 双精度浮点型 |
boolean | Boolean | 布尔型 |
char | Char | 字符型 |
byte | Byte | 字节型 |
函数的组成
在Kotlin中,函数由以下部分组成:
- fun:关键字用于声明一个函数。
- functionName:函数的名称,用于标识函数。
- parameterName:参数的名称,用于在函数内部引用参数。
- ParameterType:参数的类型,指定参数的数据类型。
- ReturnType:返回类型,指定函数返回的数据类型。
- 函数体:花括号内包含函数的实际操作,包括函数的具体实现。
kotlin
fun functionName(parameterName: ParameterType): ReturnType {
// 函数体
// 可以包含函数的具体实现
}
但是如果函数只有一句就可以精简为以下的形式:
kotlin
// 等于号已经说明了函数的结果
fun largerNumber(num1: Int, num2: Int): Int = max(num1, num2)
kotlin
// 进一步的推导
fun largerNumber(num1: Int, num2: Int) = max(num1, num2)
字符串模板
Kotlin自带了字符串模板,避免了我们在输出某些信息的时候需要通过+号拼接。
kotlin
fun main() {
val name = "XuanRan"
println("Hello $name!")
}
输出结果:Hello XuanRan!
函数参数默认值
kotlin
fun printParams(num: Int, str: String = "hello") {
println("num is $num , str is $str")
}
条件语句
kotlin
// 仿照Java的条件语句写法
fun maxValue(i:Int, k:Int) :Int {
if (i > k) {
return i
}else{
return k
}
}
kotlin
// Kotlin简化写法
fun maxValue(i:Int, k:Int) :Int {
val res = if (i > k) {
i
}else{
k
}
return res
其中的return 可省略
kotlin
// 进一步Kotlin简化写法
fun maxValue(i:Int, k:Int) = if (i > k) {i} else {k}
kotlin
// kotlin 结合函数后的进一步写法
fun maxValue(i:Int, k:Int) = if (i > k) i else k
when条件语句
when语句相当于Java中的switch语句,同样在此处的return是可省略的。
kotlin
fun getScope(name: String) = when(name) {
"Tim" -> 90
"Tom" -> 100
else -> 1
}
循环语句
- 基本循环语句
kotlin
// 最基本的for
fun oneToTen() {
for(i in 0..10){
println(i)
}
}
..
用于形成一个[0,10]的区间,相当于Java的以下写法:
java
private void oneToTen() {
for (int i = 0; i <= 10 ; i++) {
System.out.println(i);
}
}
- for-in区间遍历
kotlin
var r = 0 until 10
上述代码表示创建了一个0到10的左闭右开区间,它的数学表达方式是[0, 10)。
- step 步长
kotlin
fun oneToTen() {
for( i in 0 until 10 step 2) {
println(i)
}
}
上述代码表示在遍历[0, 10)这个区间的时候,每次执行循环都会在区间范围内递增2
- downTo遍历降序区间
kotlin
// 创建了一个[10, 1]的降序区间
fun downTo() {
for(i in 10 downTo 1) {
println(i)
}
}