学习koltin,弄懂它的操作符的意思很重要,下面就记录一下Kotlin常用操作符:
1、类型判断符 is
检查某个实例是否是某个类型,如果判断出属于某个类型,那么判断后的分支中可以直接当做该类型使用,无需显示转换
fun getStringLength(obj: Any): Int? {
//obj在右边自动动转换成"String"类型
if (obj is String && obj.length > 0)
return obj.length
return null
}
2、?操作符
表示这个对象可能为空
//在变量类型后面加上问号,代表该变量是可空变量
var name: String? = "a"
/**
* 判断obj是不是String类型,返回它的长度
*/
fun getResult(obj: Any): Int? { //Int后面接?表示可以返回null
var result = 0
if (obj is String){
result = obj.length
}
return result
}
3、Elvis操作符 ?:
在Koltin中,Elvis操作符特定是跟 null 比较,主要用来作null安全性检查。
举例:y = x?:0
等价于:
val y = if (x !=== null) x else 0
就是说如果x不等于null,则 y = x,否则 y = 0;
举例:val a = b?.length ?: -1
就是说如果 ?: 左侧表达式非空,elvis操作符就返回其左侧表达式,否则返回右侧表达式(-1)。注意,当且仅当左侧为空时,才会对右侧表达式求值。
koltlin中没有这样的三元运算符 true ?1:0,取而代之的事if (true) 1 else 0。
4、 非空断言 !! 和安全调用 ?. 和 非空断言调用 !! .
!! 是判断他是一个非空的值
var str:String?="abc"
str = null
str.length //报错,因为str可能为null,所以需要安全调用 ?. 或者 非空断言调用 !! .
str?.length //返回null
str!!.length //就会得到nullpointer空指针异常
5、..符号 以及 in 和 !in 操作符
..代表从a到b,包括a和b,这是一个闭区间运算符,in和!in就是在不在这个区间里面
例如:i in 1..10 // 等价于 1 <= i && i <= 10
6、多行输入符 """
三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,
其中的不可见字符比如/n和/t都会被保留
val str = """
one
two
"""
//等价于
val str = "one\ntwo"
val str = "one" +"\n"+"two"
7、::符号
得到类的Class对象
startActivity(Intent(this, AboutAppActivity::class.java)