与java相比 kotlin引入了一些新的特性 来提升代码的可读性 那么我们开看下kotlin 的特性
可空性
kotlin能够帮我们把运行时期的null 转化成编译期间
使用方式:
foo?.bar()
通过?.实现null校验 如果为空 那么就返回null 否则执行bar方法
Elvis运算符?:
arrayList?.size()?:0
如果arrayList为空 那么就返回0 该运算符通常和 空校验运算符一起使用
安全转换运算符as?
person as? Person
使用as? 进行类型转换
非空断言!!
foo!!
如果使用!! 当foo为null的时候 就会抛出空指针异常 使用非空断言就是告诉编译器 此时的null是我不知道的 如果错了 那么我接受这个异常 很是粗暴 不建议使用
let函数
let函数一般被用来处理null
person?.let{ it.name="zhangsan" it.age=18 }
如果person 非空 那么我们就对他的变量进行赋值 如果不使用let写起来 就比较麻烦
延迟初始化属性
kotlin在定义变量的时候 可以使用延迟属性 延迟变量的初始化
val name :String?=null
如果不使用String? 那么此时我必须完成初始化 因为val name :String 说明name 不为空
只读集合和可变集合
kotlin和java 再集合上的不同在于 kotlin将集合继续划分成可变集合和只读集合
Collection:只读集合(val)
MutableCollection:可变集合 (var)
MutableCollection继承自Collection 并且增加了修改集合内容的方法
java的ArrayList 和 HashMap都继承了 MutableCollection