一、声明变量
var name:String = "hjj"
- val只读变量
- 并非绝对只读
- 编译时常量要在函数之外定义 函数都是在运行时才调用,函数内的变量也是在运行时赋值
- var可修改变量
- 声明时能推断出类型,可以不指定类型
- const常量
- 只提供引用类型,不提供基本类型
二、表达式
- if/else if与java类似
- range表达式
in A..B
!in A..B
用in关键字检查某个值是否在指定范围内
fun main() {
val age = 4
if (age in 0..3) {
println("<4")
} else {
println(">4")
}
}
- when表达式(类似switch case)
fun main() {
val school = "小学"
val level: String = when (school) {
"学前班" -> "幼儿"
"小学" -> "少儿"
"中学" -> "青少年"
else -> "成年"
}
println(level)
}
三、string模板
模板支持在字符串的引号内放入变量值 内部还可写表达式
fun main() {
val origin = "Jack"
val dest = "Rose"
println("$origin love $dest")
val flag = false
println("Answer is ${if (flag) "我可以" else "对不起"}")
}
四、函数(重点)
fun main() {
println(doSomething(5, false))
}
private fun doSomething(age: Int, flag: Boolean): String {
return "result"
}
- 函数参数 默认值,可以给默认值
fun main() {
println(doSomething())
}
private fun doSomething(age: Int = 2, flag: Boolean = false): String {
return "result"
}
具名函数参数
fun main() {
println(doSomething(flag = true, age = 5))
}
private fun doSomething(age: Int = 2, flag: Boolean = false): String {
return "result"
}
五、Unit函数
不是所有函数都有返回值,没有返回值的函数叫Unit函数,也就是说他的返回类型是Unit
六、Nothing类型
TODO函数的任务就是抛出异常,就是永远别指望它运行成功,返回Nothing类型
七、反引号中的函数名
可以使用空格和特殊字符对函数命名,不过函数名要用一对反引号括``起来 java和Kotlin互相调用时很有用
fun main(){
MyJava.`is`()
}
fun `**~special function with weird name~**`(){
}