前言
熟悉Kotlin中常出现的一些操作符的用法,有助于我们快速入门Kotlin,下面将列举Kotlin中常用的一些操作符。
?操作符
?:操作符
!!操作符
==与===
::操作符
@符合
as?操作符
:操作符
"""操作符
is类型判断符
实例分析
?操作符
?操作符表示这个对象可能为空
//在变量类型后面加上问号,代表该变量是可空变量
var name: String? = "zhangsan"
/**
*如果str不能转为Int类型,则返回null
*/
fun parseInt(str: String): Int?
{
// (代码略)
}
//如果 b非空,就返回 b.length ,否则返回 null,这个表达式的类型是 Int?
b?.length
?:操作符
如果 ?: 左侧表达式非空,elvis操作符就返回其左侧表达式,否则返回右侧表达式。请注意,当且仅当左侧为空时,才会对右侧表达式求值。
//类型后面加?表示可为空
var age: String? = null
//age为空返回-1
val ages2 = age?.toInt() ?: -1
!!操作符
如果!!左侧非空返回该值,否则抛出NPE(空指针)异常
//类型后面加?表示可为空
var age: String? = "23"
//抛出空指针异常
val ages = age!!.toInt()
==与===
==判断值是否相等,===判断值及引用是否完全相等。
val num: Int = 128;
val a:Int? = num
val b:Int? = num
println(a == b)
print(a === b)
输出结果:
true
false
::操作符
::表示当前
startActivity(Intent(this@KotlinActivity, MainActivity::class.java))
@符合
限定this的类型
class User
{
inner class State
{
fun getUser(): User
{
//返回User
return this@User
}
fun getState(): State
{
//返回State
return this@State
}
}
}
as?操作符
当使用 as 转型的时候,可能会经常出现 ClassCastException。 所以,现在可以使as?安全转型,当转型不成功的时候,它会返回 null。
注:在使用intent传值的时候,会出现空字符串不能用as强制转型,这是应该使用as?
val m: Int? = a as? Int
:操作符
用于类的继承,变量的定义
类型和超类型之间的冒号前要有一个空格
实例和类型之间的冒号前不要空格
//定义全局变量时 var str: String? = null //类的继承与变量定义 class TestActivity(str: String) : Activity{}
"""操作符
三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,其中的不可见字符比如/n和/t都会被保留。
val str = """
one
two
"""
is类型判断符
检查某个实例是否是某个类型,如果判断出属于某个类型,那么判断后的分支中可以直接可当该类型使用,无需显示转换
fun getStringLength(obj: Any): Int?
{
//obj在&&右边自动动转换成"String"类型
if (obj is String && obj.length > 0)
return obj.length
return null
}