Kotlin学习笔记

lateinit 和 by lazy的区别:

是kotlin里面的延迟初始化实现,
1.lateinit 只用于变量 var,而 lazy 只用于常量 val
2.lateinit可以在任何位置初始化并且可以初始化多次。而lazy在第一次被调用时就被初始化,想要被改变只能重新定义
3.lazy 应用于单例模式(if-null-then-init-else-return),当且仅当变量被第一次调用的时候,想要被改变只能重新定义,委托方法才会执行(有点类似懒加载);lateinit可以在任何位置初始化并且可以初始化多次。
4.lateinit 则用于只能生命周期流程中进行获取或者初始化的变量,比如 Android 的 onCreate()

变量?和!!

? :定义变量时,可在类型后面加一个问号?,表示该变量是Nullable,不加表示该变量不可为null(不加?编译的时候默认先执行非空判断)。对于可以为null的变量,在使用该变量的时候,必须用变量名+?(如上面的s?)的形式进行调用,表示如果该变量为null,则不执行该变量调用的方法
! : 表示当前对象不为空的情况下执行

val与var

var:定义可变变量
val :定位常量,java里面的final

open关键字

open 注解与java 中的 final相反:它允许别的类继承这个类。默认情形下,kotlin 中所有的类都是 final ,open用来表示他可以被集成

==和===区别

1.Referential/引用相等(两个引用指向同一对象): ===(否定形式!==)是对象引用(地址),即判断是否同一个对象!
2.Structural/结构相等(用equals()检查): ==(否定形式!=)是通过equals()函数进行比较!

let,apply,with,run函数区别

https://www.jianshu.com/p/28ce69d58fea

Kotlin集合

https://blog.csdn.net/xsg2357/article/details/80417980
https://www.jianshu.com/p/6d95db6e9f87

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,282评论 9 118
  • 本文只是自学kotlin所做笔记,并非全部原创 1、基本语法 var是变量,val是常量kotlin中没有new关...
    HarveyLegend阅读 1,153评论 0 0
  • 系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正。如果你觉得我的文章对你有用,欢迎关注我,我们一起...
    我爱吃栗子啊阅读 14,401评论 3 8
  • Kotlin 学习笔记(一) Kotlin初识 这是一个Kotlin系列的教程,目的是为了使自己记忆和理解的更加深...
    真的有照片阅读 1,216评论 1 6
  • 本文介绍了Kotlin入门应该知道一些基本语法概念。包括变量、常量、函数、空安全、类定义、类继承、数据类、接口定义...
    于卫国阅读 6,570评论 6 10