Kotlin实战1 — 函数和变量

Kotlin实战1 — 函数和变量

函数

1
2
3
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}

​ 函数声明以关键字fun开始,函数名紧随其后,括号括起来参数列表,参数列表后面跟着返回类型,与参数用一个冒号隔开。

在Kotlin中,if是表达式,而不是语句。表达式:表达式由变量,操作符和方法调用组成,表达式的返回值类型由表达式中的元素(如操作符,变量等)决定如:a = 1。语句:是完整的执行单元,如:赋值表达式、所有使用 ++ 或者 --的变量、方法引用、创建对象的表达式,如:a++;

表达式函数体

1
fun max(a: Int, b: Int): Int = if(a > b) a els b

如果函数体写在花括号中,我们说这个函数有代码块体,如果直接返回了一个表达式,它就有表达式体。对于表达式函数体来说,函数还可以省略返回值类型,编译器会分析作为函数体的表达式,并把它的类型作为函数的返回值类型,这种分析被称为类型推导

变量

在Kotlin中,声明变量以关键字开始,然后是变量名,最后可以加上类型(也可以不加上)。

1
2
val question = "the ultimate question of life,th universe,and everything"
val answer = 42

如果变量没有初始化器,就需要显示的指定它的类型

1
2
val answer: Int
answer = 42

可变变量和不可变变量

  • val — 不可变引用。使用val声明的变量不能在初始化之后再次赋值,它对应的是Java的final变量。
  • var — 可变引用。这种变量的值可以被改变,对应普通(非final)的Java变量

val引用自身是不可变的,但它指向的对象可能是可变的。例如:

1
2
val languages = arrayListOf("Java")
languages.add("Android")

字符串模板

1
2
3
4
fun main(args: Array<String>) {
val name = if(args.size > 0) args[0] : "Kotlin"
println("hello, $name!")
}

Kotlin可以在字符串字面值中引用局部变量,只需要在变量名称前面加上字符$。等价于Java中的字符串连接(“hello, “ + name + “!”)。还可以使用更复杂的表达式:

1
2
3
4
5
fun main(args: Array<String>) {
if(args.size > 0) {
printl("hello, ${args[0]}!")
}
}

还可以在双引号中直接嵌套双引号,只要它们处于某个表达式的范围内(即花括号内)。

1
2
3
fun main(args: Array<String>) {
println("hello, ${if (args.size > 0) args[0] else "someone"}!")
}
0%