Kotlin常用操作符
1、Elvis操作符 ?:
如果 ?: 左边表达式非空,elvis操作符就会返回左边的结果,否则返回右边的结果。
请注意,仅在左侧为空的时候,右侧的表达式才会计算
val a = b?.length?:-1
//等同于:
val a: Int = if(b != null) b.length else -1
2、安全转换 as?
当使用 as 转型的时候,可能会经常出现 ClassCastException。 所以,现在可以使as?安全转型,当转型不成功的时候,它会返回 null。
注:在使用intent传值的时候,会出现空字符串不能用as强制转型,这是应该使用as?
val m: Int? = a as? Int
3、冒号:
用于类的继承,变量的定义
1、类型和超类型之间的冒号前要有一个空格
2、实例和类型之间的冒号前不要空格
//定义全局变量时
var str: String? = null
//类的继承与变量定义
class TestActivity<T : Serializable>(str: String) : Activity{}
4、类型判断符 is
检查某个实例是否是某个类型,如果判断出属于某个类型,那么判断后的分支中可以直接可当该类型使用,无需显示转换
fun getStringLength(obj: Any): Int? {
//obj在&&右边自动动转换成"String"类型
if (obj is String && obj.length > 0)
return obj.length
return null
}
5、范围操作符 .. 以及 in
使用 in 运算符来检查某个数字是否在指定区间内,
if (i in 1..10) { // 等价于 1 <= i && i <= 10
println(i)
}
downTo()函数
区间内循环:
for (i in 4 downTo 1){
print(i) //倒叙遍历
}
// print “4321”
step()函数
可以进行任意数量的迭代,而不是每次变化都是1
for (i in 1..4 step 2) print(i) // prints "13"
for (i in 4 downTo 1 step 2) print(i) // prints "42"
多行输入符 三个双引号
三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,其中的不可见字符比如/n和/t都会被保留
val str = """
one
two
"""
//等价于
val str = "one\ntwo"
val str = "one" +"\n"+"two"