kotlin

123 阅读1分钟

学习kotlin最好的办法就是究其本质,那么多语法糖,为什么这样写,我们需要看它最终实现是什么样的,这样才能全面的认识,并深刻的理解kotlin这门语言。

本文内容来自《Kotlin从小白到大牛》-关东升 《kotlin_for_android_developers》-中文译版

image.png

image.png

在这里不是很理解这个kotlin运行时库的作用,如果说前面kotlin编译器已经将.kt文件编译成了.class文件,为什么不能由java虚拟机直接解释执行呢,为什么在里面又加了一个kotlin运行时库呢。要了解这个问题的答案,需要探究一下编译生成的kotin字节码和java字节码的区别,暂时姑且把他当做和java字节码一样的东西。

有了这个前提,我们再来看一些kotlin的特性,就可以更好的理解为什么是这样:

1.扩展函数:

本质是静态函数

2.伴生对象: kotlin中没有static关键字,所以用companion object统一声明静态相关的东西:

image.png

3.委托

4.内联函数

5.中缀运算符

6.延迟初始化

7.惰性加载

8.内部类 使用inner关键字,相当于java的内部类 如果不适用inner关键字,kotlin中叫嵌套类,相当于java的静态内部类(static class)

思考:为什么有内部类这种东西,内部类是如何访问外部成员变量的?

关于面试题的比较全面的文章:

juejin.cn/post/707674…