Kotlin语法

个人笔记,重温kotlin...

具有空安全类型的。
var 表示可变的变量
val 表示不可变的变量,不是一个常量
!!表示强转,转为可以为空
fun 表示一个方法体,声明一个方法

kotlin 没有封装类概念(int 没有Integer)
创建匿名内部类,使用object 类名{ },也是声明单例的一种方法。
kotlin调用java的类,使用 "类名::class.java"
kotlin语法与java语言产生冲突的时候使用' '来进行解决冲突(例如:'in')
空值敏感问题:当kotlin与java代码互调的时候,在接收一个java代码类对象的时候,无法确定这个值是否为空的时候需要用“?”来进行赋值一个可空类型的,才能保证代码为安全的,否则可能会发生空指针问题。
kotlin 没有静态变量与静态方法,可以通过@JvmStatic来修饰一个方法,编译以后被编译成public static

函数与lambda闭包
fun 关键字声明一个函数
函数参数允许有一个默认值(例如: fun eg1(num: Int = 0){ })
函数嵌套:内部函数
扩展函数:需要扩展的类名.方法名(方法体),用于一个第三方SDK,不能控制的kotlin类或者java类,不仅能扩展成员变量,也能扩展成员类。是静态添加的,默认编译为public static final.
(注:open 是不final,kotlin 创建类会默认为final类型)
lambda语法:
用“{}”就是闭包,就是lambda->后面表示为闭包体。lambda表达式会被编译成匿名内部类/匿名对象,参数限制22个。需要添加更多参数,需要自己添加自定义接口。
高阶函数(Lambda)的参数是函数,使用函数作为另一个函数的参数
函数是一级公民。语法方法名::方法
由于 lambda 表达式都会默认编译为匿名类。需要占用内存。如果短时间内 lambda 表达式被多次调用,大量的对象实例化就会产生内存流失。inLine就是为了避免这种情况发生。
inLine:变成语句的调用,减少临时文件(匿名类)的生成,过度使用会增加编译器负担,增加代码块,查找问题麻烦。只会用于修饰高级函数。

你可能感兴趣的:(Kotlin语法)