kotlin学习(五)

kotlin的类型系统

一.可空性
1.可空类型
问号可以加在任何类型的后面来表示这类型可以保存null引用,kotlin中的类型都表示其非空
没有问号的类型表示其不能存储null引用
2.安全调用运算符 ?.

var name : String? = user?.name

3.Elvis运算符:提供代替null的默认值

fun foo(s : String?){
	val t :String = s ?: ""
}//如果s为null,则返回一个空字符串

fun strLen(s : String?) : Int = s?.length ?: 0

4.安全转换 as?
运算符尝试把值转换成指定的类型,如果值不是合适的类型就为null
5.非空断言 !!
运算符可以把任何值转换成非空类型。如果对null做非空断言,则会抛出异常
抛出异常的位置为非空断言所在的位置
6.let函数
let函数用于处理可空表达式,把调用它的对象变成lambda表达式的参数
当参数不为null时,执行lambda表达式;当参数为null时,什么都不发生

email?.let{
	sendEmail(it)
}

7.延迟初始化的属性:通过lateinit关键字标记
8.可空类的拓展、类型参数的可空性

二.数据类型
kotlin并不区分基本数据类型和包装类型
在运行时,数字类型会尽可能使用最高效的方式来表示,除了泛型类。
在进行数字转换时,kotlin需要显式的进行转换

val i = 1//int
val l : Long = i.toLong()//显式转换

Any类型
对应Java中的Object类,Any类型是kotlin中所有非空类型的超类型
把基本数据类型的值传递给Any变量是会自动装箱
当kotlin使用Any时,它会被编译成Java字节码中的Object

Unit类型类比于Java的void,Nothing类型表示这个函数永不返回

三.集合与数组

List<Int?>//集合本身不为空,但是列表中每个值可能为空
List<Int>?//集合可能为空,但是列表中的每个值都不为空

只读集合和可变集合
数组的创建

方法作用
arrayOf创建一个数组,包含元素时指定为该函数的实参
arrayOfNulls创建包含null的数组
Array构造方法接受数组大小和lambda表达式
var array = Array<26>{  i  -> ('a' + i).toString() }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值