文章目录kotlin是一门静态语言,变量类型在运行时不会改变
- Kotlin
- 1.变量
- 1.1可空类型
- 1.2非空断言
- 1.3延迟初始化
- 1.4可见性
- 2.函数
- 2.1空安全设计
- 2.2可见性
- 2.3get,set
-
变量声明必须初始化,或声明成抽象的,因为变量没有默认值
-
所谓「可空不可空」,关注的全都是使用的时候,即「这个变量在使用时是否可能为空」
对于一些可能为空的变量,如网络获取的数据,我们允许它为空值
- 声明时,在类型右边加一个?号,解除它的非空限制
- 使用时,?. 对变量做一次非空确认后再调用方法,可以做到线程安全
- 使用时,!!.,告诉编译器不用帮我们检查了,也就和Java差不多
- lateinit var view: View
- 变量默认为public
fun cook(name: String): Food {
...
}
-
若返回值为空,可以写为
-
fun main(): Unit {} -
fun main() {}
-
- 可空变量可以传给可空参数
- 不可空变量可以传给不可空参数
- 可空变量不可传给不可空参数
- 默认为public
- override时
class User {
var name = "Mike"
fun run() {
name = "Mary"
// 的写法实际上是这么调用的
// setName("Mary")
println(name)
// 的写法实际上是这么调用的
// print(getName())
}
}
如何操作
class User {
var name = "Mike"
get() {
return field + " nb"
}
set(value) {
field = "Cute " + value
}
}
- getter,setter有了专门的关键字,get,set
- getter / setter 函数位于 var 所声明的变量下面
- setter 函数参数是 value
- field对编码的人不可见,但会自动应用于 getter 和 setter
- val修饰的变量不能调用 setter 函数,因此,val 声明的变量是不能重写 setter 函数的,但它可以重写 getter 函数,取值的时候仍然可能被修改,这也是和 Java 里的 final 的不同之处。



