KotLin基础语法

26 阅读3分钟

val 常量 var 变量

条件语句 when关键字 可替代if条件语句

Lateinit关键字 推出属性初始化

SAM转换 单一抽象方法转换

伴生对象 companion object 与某个类相关的变量或函数 类似于使用static修饰

属性委托 关键字 by使用反射 提供整个应用中重复使用的通用实现

Kotlin默认内部类静态;

a<b顺序迭代一个区间用 in a..b

a>b逆序迭代一个区间用 a downTo b

枚举:一组有限数量的值;

密封类:一组有限数量的子类;sealed关键字

尽可能多地使用不可变变量 val

var 是可变变量,对应Java中的普通变量;

Kotlin抛弃Java常用的隐式转换,使用显示转换;toLong()、toDouble()等

字符串

字符串模板在变量前使用$,如果是复杂变量可以用花括号括起来{}; 原始字符串使用三个双引号表示,保留复杂文本的格式;

数组

Kotlin使用arrayOf()来创建数组,根据传入值做类型推导;Kotlin中数组和集合统一使用.size()获取长度;

函数

使用fun关键字来定义函数; 新特性:命名参数,允许在调用函数时传入参数名,增加了可读性和易维护性; 支持默认参数值,有默认值的参数可传可不传;替代builder模式的同时,可读性也很强;

流程控制

if、when、for、 while关键字

Elvis表达式,简写了if当作表达式的判空情况;

when配合->适用大于两个逻辑分支的情况,也可作为表达式,为变量赋值;

while、for都可以用作循环,for更常用于迭代,配合in-迭代、downTo-逆序迭代、step-步长 关键字

定义比较简洁,可省略get&set方法;

自定义getter通过自定义get()方法,可以改变返回值的规则;

自定义属性setter,在自定义set()方法中加入逻辑;

抽象类

使用冒号:来表示继承;

open

正常的类使用open关键字修饰,也可以被继承; 默认不可被继承,类和方法都需要open修饰才可以被继承;

接口和实现

interface修饰 接口的方法可以有默认实现,同时也可以拥有属性;(这是与Java最大不同)

嵌套

嵌套类默认是外部类的静态内部类,如果想作为普通内部类需要加上inner关键字; 默认静态防止内部类拥有外部类的引用;

数据类

前面用 data 关键字修饰; 数据类的解构声明可以创建一连串变量; 数据类默认实现copy方法实现浅拷贝,同时支持修改某个属性;

密封类

sealed关键字; 枚举和对象的结合体,支持when表达式提供判断完备性; 枚举中的值对应密封类中的子类;

不管是val还是var,只要基础变量可能为空,就会被转换为Java的包装类型; 相反,只要基础变量不可能为空,该变量就会被转换为Java的原始类型;