从java到Kotlin学习五:kotlin系统类型

时间:2022-07-08 15:47:04

与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