不断学习,做更好的自己!💪
视频号 | CSDN | 简书 |
---|---|---|
欢迎打开微信,关注我的视频号:程序员朵朵 | 点我 | 点我 |
1. 基础
==、===和equal的区别?
==和equal
的作用相同,===比较内存地址
var和val的区别?
var
:可变引用,具有可读和可写权限,值可变,类型不可变val
:不可变引用,具有可读权限,值不可变,但是对象的属性可变
2. 函数
Kotlin 中默认参数的作用以及原理?
作用:配合 @JavaOverloads
可以解决Java
调用Kotlin
函数重载的问题。
原理:Kotlin
编译的默认参数是被编译到调用的函数中的,所以默认参数改变的时候,是需要重新编译这个函数的。
Kotlin 中顶层函数的原理
顶层函数实质就是 Java
中的静态函数,可以通过 Kotlin
中的 @Jvm:fileName
自动生成对应的 Java
调用类名。
中缀函数是什么?注意点?
中缀函数需要是用infix关键字修饰,如downTo
:
public infix fun Int.downTo(to: Int): IntProgression {
return IntProgression.fromClosedRange(this, to, -1)
}
注意点是函数的参数只能有一个,函数的参与者只能有两个。
解构函数的本质?
解构声明将对象中的所有属性,解构成一组属性变量,而且这些变量可以单独使用,可以单数使用的原因是通过获取对应的component()
方法对应着类中每个属性的值,这些属性的值被存储在局部变量中,所以解构声明的实质是局部变量。
扩展函数的本质?
扩展函数的本质就是对应Java
中的静态函数,这个静态函数参数为接受者类型的对象,然后利用这个对象去访问对象中的属性和成员方法,最后返回这个对象的本身。
扩展函数和成员函数的区别?
- 实质不同:扩展函数实质是静态函数,是外部函数,成员函数是内部函数。
- 权限不同:扩展函数访问不了私有的属性和成员方法,成员函数可以。
- 继承:扩展函数不可复写,成员函数可以复写。